Ist es empfehlenswert, die Hauptfunktion in einer eigenen Datei getrennt zu halten?

14

Ist es empfehlenswert, eine main.c-Datei zu haben, die nur die Hauptfunktion und keine anderen Funktionen enthält, damit alle anderen Funktionen miteinander verbunden werden können?

Wenn es keine endgültige Regel gibt, wann ist es gut, dies zu tun und nicht?

Michael
quelle

Antworten:

15

Idealerweise sollten alle Arbeiten, die als Teil von wiederverwendbarem Code betrachtet werden können, in Form einer Bibliothek erstellt werden . Die Ausgleichsarbeit ist eine Anwendung, die getrennt sein sollte, wo main()sich der Wohnsitz befindet.

Aber main()alleine muss man nicht isoliert sitzen. Funktionen wie parse_arguments(argc,argv) sollten eher zusammen mit main als separat sein.

Dipan Mehta
quelle
7

Unser Kodierungsstandard verlangt, dass main () in main.c. enthalten ist. Andere Methoden in main.c sind in der Regel allgemeine Fehlerbehandlungsroutinen und Hilfsfunktionen für main (siehe @Dipan answer "parse_arguments" sowie Dinge wie "display_help" usw.).

Eine gute Regel ist, wenn eine Funktion mehr als nur die laufende Anwendung zu unterstützen und mit der Geschäftslogik zu beginnen beginnt, ist es an der Zeit, dass main.c nicht mehr verfügbar ist

mattnz
quelle
4

Es gibt zwei Faustregeln:

  1. Der Leser sollte sich nicht fragen müssen, wo Sie main () versteckt haben.
  2. main () sollte kein irrelevantes Durcheinander enthalten.

Die Implementierung eines Codierungsstandards, der besagt, dass sich main () immer in einer Datei mit dem Namen main.c befinden sollte, ist sowohl eine gute als auch eine gängige Praxis. Diese Datei sowie main () selbst sollten kein unnötiges Durcheinander enthalten.

Im Idealfall sollten main () und main.c nur Folgendes enthalten

  • Beinhaltet programmweite Header-Dateien.
  • Argument-Parsing-Code von argv, argc.
  • Auf Hostless-Systemen: kritische Registereinstellungen, Stapelzeiger-Einrichtung usw. Aber nur, wenn main () der erste Einstiegspunkt für das Programm ist.
  • Aufrufen zum Starten des Betriebssystems oder einer Schleife, die die Statusmaschine des Programms aufruft, oder in gehosteten Desktopsystemen Erstellen und Initialisieren von Fenstern, die sich auf den Haupt-GUI-Thread beziehen.
  • Interne (statische) Funktionen, die von main () aufgerufen werden und eine der oben genannten Funktionen ausführen.
  • Auf einem gehosteten System: Geben Sie 0 zurück.

quelle
1

Ein sauberer Einstiegspunkt in einer getrennten Datei erleichtert das Verständnis und die Pflege des Codeflusses. Ich hatte immer die Angewohnheit, eine sehr kleine und prägnante main () - Funktion in einer anderen Datei zu speichern, von der aus ich die Programmschritte verfolgen kann. Nur aus Gründen der Sauberkeit ist es gut, es getrennt zu halten.

Wajih
quelle