2010-09-05 7 views
9

Ich habe große Hauptdatei enthält etwa 7.000 Zeilen C-Code. Wenn ich diesen Code modular machen und den Code von dieser Datei trennen möchte. Was ist das Hauptkriterium für die Trennung der Funktionen aus der Datei und Funktionen, die in der Datei bleiben sollen.Wie organisiere ich meine c-Code

+2

überprüfen Sie diesen Beitrag, ich weiß nicht, ob es helfen könnte, ich denke, es könnte http://stackoverflow.com/questions/3615789/what-to-do-about-a-11000-lines- c-Quelldatei/3617776 # 3617776 –

Antwort

6
  • Folgen Sie früheren Vorschlägen.
  • Entfernen Sie doppelten oder fast doppelten Code, indem Sie Funktionen erstellen.
  • Organisieren durch Funktionalität und Abhängigkeit. Module sollten so wenig gegenseitige Abhängigkeit wie möglich haben.
  • Folgen Sie SOLID Principles und andere Entwurfsmuster und Praktiken (die alle in gewissem Grad in C implementiert werden können).

Ich verwende gerne eine Top-down-Dekomposition des Codes. Zum Beispiel:

main() 
{ 
    Initialize(); 
    Introduce(); 
    while (some_condition) 
    { 
     DoSomething(); 
     DoSomethingElse(); 
    } 
    SayGoodbye(); 
    Shutdown(); 
} 

Die main() sollten kurz und auf den Punkt und geben Ihnen einen schnellen Überblick darüber, was das Programm macht aus einem High-Level. Jede dieser Funktionen kann auf ähnliche Weise unterteilt werden. Dies sollte fortgesetzt werden, bis die Funktionen der niedrigsten Ebene einen einzigen, fokussierten Zweck haben (logische Modularität). Diese Funktionen können in zusätzliche .c/.h-Dateien eingefügt werden, um physische Modularität zu haben.

Viel Glück!

6

Aufbrechen nach Funktionalität/Verantwortung.

Zum Beispiel, legen Sie alle String-Behandlung in einem Modul/Datei, legen Sie Dateihandling in einem anderen.

4

Es ist eine einfache Maßnahme: je weniger Deklarationen Sie in der .h-Datei haben, desto modularer ist es. Die Gruppierung nach Funktionalität ist wichtig. Mit extern Erklärungen ist sehr schlecht, geben Sie denen eine zusätzliche "Strafe".

Verwandte Themen