É uma boa prática manter a função principal separada em seu próprio arquivo?

14

É uma boa prática ter um arquivo main.c que tenha apenas a função principal e nenhuma outra função para que todas as outras funções possam ser conectadas?

Se não existe uma regra definitiva, quando é bom fazê-lo e não fazê-lo?

Michael
fonte

Respostas:

15

Idealmente, todo o trabalho que possa ser considerado parte do código reutilizável deve ser criado na forma de biblioteca . O trabalho de balanceamento é uma aplicação que deve ser separada onde main()residirá.

Mas main()sozinho não precisa ficar isolado. Funções como parse_arguments(argc,argv) devem estar junto com main em vez de separadas.

Dipan Mehta
fonte
7

Nosso padrão de codificação requer que main () esteja em main.c. Outros métodos no main.c tendem a ser manipuladores de erro de alto nível e funções auxiliares para main (consulte a resposta @Dipan "parse_arguments", além de coisas como "display_help" etc.

Uma boa regra a seguir é quando uma função começa a fazer mais do que dar suporte ao aplicativo em execução e começa a fazer lógica de negócios, é hora de sair do main.c

mattnz
fonte
4

Existem duas regras básicas:

  1. O leitor não precisa se perguntar onde você escondeu main ().
  2. main () não deve conter desorganização irrelevante.

Implementar um padrão de codificação afirmando que main () deve sempre estar localizado em um arquivo chamado main.c é uma prática boa e comum. Esse arquivo, assim como o próprio main (), não devem conter confusão desnecessária.

Idealmente, main () e main.c devem conter apenas o seguinte

  • Inclui arquivos de cabeçalho para todo o programa.
  • Código de análise de argumentos de argv, argc.
  • Em sistemas sem host: configurações críticas de registro, configuração de ponteiros de pilha, etc. Mas somente se main () for o primeiro ponto de entrada para o programa.
  • Chamadas para iniciar o sistema operacional, ou um loop que chama a máquina de estado do programa ou em sistemas de desktop hospedados, criação e inicialização de janelas relacionadas ao encadeamento principal da GUI.
  • Funções internas (estáticas) chamadas de main (), manipulando qualquer uma das opções acima.
  • Em um sistema hospedado: retorne 0.

fonte
1

Um ponto de entrada limpo em um arquivo separado faz com que o fluxo de código seja facilmente compreendido e mantido. Eu sempre tive o hábito de manter uma função main () muito pequena e concisa em um arquivo diferente, a partir de onde eu posso rastrear as etapas do programa. Por uma questão de limpeza, é bom mantê-lo separado.

Wajih
fonte