Является ли хорошей практикой хранить главную функцию отдельно в своем файле?

14

Является ли хорошей практикой иметь файл main.c, в котором есть только основная функция, и никаких других функций, чтобы можно было связать все другие функции?

Если нет окончательного правила, когда это хорошо, а не делать?

Майкл
источник

Ответы:

15

В идеале вся работа, которую можно рассматривать как часть повторно используемого кода, должна создаваться в форме библиотеки . Баланс работы, это приложение, которое должно быть отдельным, где main()будет находиться.

Но main()одному не нужно сидеть в изоляции. Функции вроде parse_arguments(argc,argv) должны быть вместе с основными, а не отдельными.

Дипан Мехта
источник
7

Наш стандарт кодирования требует, чтобы main () был в main.c. Другими методами в main.c обычно являются высокоуровневые обработчики ошибок и вспомогательные функции для main (см. Ответ @Dipan «parse_arguments», а также такие вещи, как «display_help» и т. Д.).

Хорошее правило: когда функция начинает делать больше, чем просто поддерживать работающее приложение и начинает делать бизнес-логику, пора выходить из main.c

mattnz
источник
4

Есть два практических правила:

  1. Читателю не нужно удивляться, где вы спрятали main ().
  2. main () не должен содержать ненужного беспорядка.

Для реализации стандарта кодирования, утверждающего, что main () всегда должен находиться в файле с именем main.c, это хорошая и распространенная практика. Этот файл, как и сам main (), не должен содержать ненужных помех.

В идеале main () и main.c должны содержать только следующее

  • Включает заголовочные файлы для всей программы.
  • Аргумент разбора кода argv, argc.
  • В системах без хоста: настройки критических регистров, установка указателя стека и т. Д. Но только если main () является первой точкой входа для программы.
  • Вызывает запуск ОС, или цикл, вызывающий конечный автомат программы, или в размещенных настольных системах - создание и инициализация окон, связанных с основным потоком GUI.
  • Внутренние (статические) функции, которые вызываются из main () и обрабатывают любое из вышеперечисленного.
  • В размещенной системе: вернуть 0.

источник
1

Чистая точка входа в отдельном файле позволяет легко понять и поддерживать поток кода. У меня всегда была эта привычка хранить очень маленькую и лаконичную функцию main () в другом файле, откуда я могу отслеживать шаги программы. Просто ради чистоты хорошо держать это отдельно.

Wajih
источник