É 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 nele e nenhuma outra função, para que todas as outras funções possam ser conectadas?

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

    
por Michael 16.01.2012 / 07:23
fonte

4 respostas

15

Idealmente, todo o trabalho que pode 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 em isolamento. Funções como parse_arguments(argc,argv) devem estar junto com main e depois separadas.

    
por 16.01.2012 / 07:29
fonte
7

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

Uma boa regra é quando uma função começa a fazer mais do que suportar o aplicativo em execução e começar a fazer lógica de negócios, está na hora de estar fora do main.c

    
por 16.01.2012 / 10:25
fonte
4

Existem duas regras básicas:

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

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

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

  • Inclui arquivos de cabeçalho em todo o programa.
  • Argumento de análise de argumentos de argv, argc.
  • Em sistemas sem host: configurações de registro críticas, configuração de ponteiro de pilha etc. Mas somente se main () é o primeiro ponto de entrada para o programa.
  • Chamadas para inicializar o SO 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 thread da GUI principal.
  • Funções internas (estáticas) que são chamadas de main (), manipulando qualquer uma das opções acima.
  • Em um sistema hospedado: retorne 0.
por 19.01.2012 / 09:05
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 esse hábito de manter uma função main () muito pequena e concisa em um arquivo diferente de onde em diante eu posso rastrear as etapas do programa. Apenas por uma questão de limpeza, é bom mantê-lo separado.

    
por 16.01.2012 / 13:56
fonte