È buona prassi mantenere la funzione principale separata nel proprio file?

14

È buona norma avere un file main.c che abbia solo la funzione principale e nessun'altra funzione in modo che tutte le altre funzioni possano essere interfacciate?

Se non esiste una regola definitiva, quando è opportuno farlo e non farlo?

    
posta Michael 16.01.2012 - 07:23
fonte

4 risposte

15

Idealmente, tutto il lavoro che può essere pensato come parte di codice riutilizzabile, dovrebbe essere creato sotto forma di biblioteca . La bilancia funziona, è un'applicazione che dovrebbe essere separata dove risiederà main() .

Ma main() da solo non deve stare in isolamento. Funzioni come parse_arguments(argc,argv) dovrebbero essere insieme a main piuttosto che separate.

    
risposta data 16.01.2012 - 07:29
fonte
7

Il nostro standard di codifica richiede che main () sia in main.c. Altri metodi in main.c tendono ad essere gestori di errori di alto livello e funzioni di supporto per main (consultare @Dipan answer "parse_arguments", così come "display_help" ecc.

Una buona regola da seguire è quando una funzione inizia a fare di più che supportare l'applicazione in esecuzione e iniziare a fare business logic, è ora che sia fuori main.c

    
risposta data 16.01.2012 - 10:25
fonte
4

Ci sono due regole pratiche:

  1. Il lettore non dovrebbe chiedersi dove si nasconde main ().
  2. main () non dovrebbe contenere clutter irrilevanti.

Implementare uno standard di codifica che affermi che main () dovrebbe sempre trovarsi in un file chiamato main.c è una pratica buona e comune. Questo file, così come main () stesso, non dovrebbe contenere clutter inutili.

Idealmente main () e main.c dovrebbero contenere solo i seguenti

  • Include file di intestazione a livello di programma.
  • Argomento che analizza il codice di argv, argc.
  • Su sistemi senza host: configurazioni critiche del registro, configurazione del puntatore dello stack ecc. Ma solo se main () è il primo punto di ingresso per il programma.
  • Chiamate per avviare il sistema operativo, o un ciclo che chiama la macchina di stato del programma, o nei sistemi desktop ospitati, la creazione e l'inizializzazione di finestre relative al thread della GUI principale.
  • Funzioni interne (statiche) chiamate da main (), che gestiscono qualsiasi dei precedenti.
  • Su un sistema ospitato: return 0.
risposta data 19.01.2012 - 09:05
fonte
1

Un punto di ingresso pulito in un file separato rende il flusso del codice facilmente comprensibile e mantenuto. Ho sempre avuto questa abitudine di mantenere una funzione main () molto piccola e concisa in un file diverso da cui in poi posso tracciare i passaggi del programma. Solo per motivi di pulizia è bene tenerlo separato.

    
risposta data 16.01.2012 - 13:56
fonte

Leggi altre domande sui tag