Функция должна делать одну вещь и делать это хорошо.
Множество небольших функций, используемых большими функциями-обертками, помогают структурировать код из небольших, простых для понимания (и тестируемых!) Строительных блоков.
Создание небольших модулей с парой функций каждый. Выставляйте только то, что вы должны, сохраняйте все остальное внутри модуля. Связать небольшие модули вместе с их файлами интерфейса .h.
Предоставляет функции Getter и Setter для доступа к статическим переменным области файла в вашем модуле. Таким образом, переменные записываются только в одном месте. Это также помогает отслеживать доступ к этим статическим переменным, используя точку останова в функции и стек вызовов.
Одно важное правило при разработке модульного кода: не пытайтесь оптимизировать без необходимости. Множество небольших функций обычно дают более чистый, хорошо структурированный код, и дополнительные затраты на вызов функции могут стоить этого.
Я всегда стараюсь держать переменные в их самой узкой области, в том числе в функциях. Например, индексы для циклов обычно могут храниться в области видимости блока и не должны отображаться на уровне всей функции. C не так гибок, как C ++, с «определите, где вы его используете», но он работоспособен.