[design frage] header - / cppdateien



  • Hi,
    Also ich frage euch mal was besser ist:

    das:

    - foo.cpp      -->     foo.h
    - foo2.cpp     -->     foo2.h
    
    - main.cpp     -->     main.h , foo.h , foo2.h
    

    (Anmerkung: es gibt viele foos die dann alle in der main.cpp includiert werden müssen...)

    oder das:

    - foo.cpp      -->     main.h
    - foo2.cpp     -->     main.h
    
    - main.cpp     -->     main.h
    

    (Anmerkung: main.h ist ganzschön groß...)

    welche variante würdet ihr nehmen?

    (PS: es ist ein ganzschön großes Porjekt)



  • 😕

    Du meinst mit deiner zweiten Variante, ob du alle Klassen/Funktions-Deklarationen in eine einzige main.h stopfen sollst?

    Dann müsste ja jedesmal das gesammte Projekt neu übersetzt werden, wenn man da 'ne Änderung macht. Ausserdem wäre das nicht sonderlich übersichtlich.

    (Anmerkung: es gibt viele foos die dann alle in der main.cpp includiert werden müssen...)

    Naja, dann ist die main.cpp vielleicht zu groß gestaltet.

    Die erste Version ist jedenfalls generell die richtige.



  • Also ich spendiere jeder Klasse einen eigenen Header, außer wenn ich Klassen in Klassen deklariere. Funktionen werden bei mir nach (für mich 😉 )sinnvollen Gruppen sortiert. Ich würde DrGreenthumb also zustimmen.



  • hm.. ja ich sollte mir mal was zum thema code design besorgen... 🙄

    aber sagen wirs mal so:

    ich hab in die foos (foo.cpp / foo.h) meine klassen gestopft und benutzt die dann in der main.cpp...

    ich weis nicht was / wie ich das sonst machen sollte da man die int main () {} ja nicht auf mehrere dateien aufteilen kann...

    und wenn ich jetzt meine klassen aufrufe (etc.) in funktionen packe und wieder auf dateien aufteile find ich das ziemlich verwirrend denn:

    fehler:
    was in main benutztes geht nicht dann in der funktion suchen in der klasse suchen und das in 3 dateien...

    Kannst du (oder andere) mir mal nen besseren weg zeigen wie ich nen großes projekt besser aufteile (designe)?!

    PS: ich versuch schon OOP zu benutzten und dann noch designen überlastet sei 😃 😉



  • meine antwort bezog sich auf das:

    "Naja, dann ist die main.cpp vielleicht zu groß gestaltet."



  • *Wie* du designen sollst kann ich dir nicht sagen, da kämpfe ich selbst noch mit 😉 aber ein wesentliches Ziel des Design ist es, die Abhängigkeiten zwischen den Klassen sinnvoll zu gestalten. Wenn eine Klasse (oder allgemein Modul) sternförmig von 20 anderen abhängig ist, kann das ein Zeichen dafür sein, dass das Design noch nicht weit genug durchdacht ist. Muß aber nicht. Solange du diesen Rattenschwanz an #includes nicht in jeder .h-Datei drin hast, und somit jeder von jedem abhängig ist, geht das eventuell in Ordnung.



  • aha

    bei mir hat jede Datei seinen eigenen kleinen header (einen) 🙂

    nur meine main.cpp hat dann alle header drin



  • BTW: sternförmig würd ich irgentwie sowieso nich hinbekommen..

    ehr so wie des treeview im WinExplorer..



  • Eine Frage hab ich noch:

    ist es gut / schlecht / normal das ich in jeder *.cpp die header wie iostream oder windows einbinde?

    und ifstream in nem header?!



  • ne is schlecht 🕶



  • Original erstellt von <Apfel>:
    ne is schlecht 🕶

    ...

    ho ho ho (wie soll ich das sonst machen?!)



  • Original erstellt von <Banane>:
    ho ho ho (wie soll ich das sonst machen?!)

    abhängigkeiten reduzieren.
    nicht alle klassen werden die windows.h brauchen...



  • Original erstellt von Shade Of Mine:
    abhängigkeiten reduzieren.
    nicht alle klassen werden die windows.h brauchen...

    leider ist es so das wirklich alle klassen die win.h aka windows.h brauchen
    hm.. moment hab eine gefunden die keine win brauch 🙂

    Mal ne Verständnisfrage:

    hab ich dann am ende quasi 7 windows.h in meinem Program?!
    oder macht der compiler: "aha win.h haben wir schon 1 mal reicht ja...."



  • Wenn die Header-Datei schon einmal eingebunden wurde, bindet der Compiler sie natürlich nicht noch einmal ein (nur einen Verweis) - sonst würde die datei "explodieren" ...

    M.T.



  • Original erstellt von Manuel:
    **Wenn die Header-Datei schon einmal eingebunden wurde, bindet der Compiler sie natürlich nicht noch einmal ein (nur einen Verweis) - sonst würde die datei "explodieren" ...

    M.T.**

    ok gut , aber dann ist es doch nicht so schlimm die windows.h oft einzubinden?!



  • Der Stil ist aber besser, wenn man nicht immer alles einbindet (und vielleicht auch die Geschwindigkeit (?))

    M.T.



  • Original erstellt von Manuel:
    **Der Stil ist aber besser, wenn man nicht immer alles einbindet (und vielleicht auch die Geschwindigkeit (?))

    M.T.**

    hm..Geschwindigkeit: du meinst compile-dauer oder die Geschwindigkeit zur Laufzeit?!?



  • Laufzeit - aber ich glaube nicht, dass das wirklich was verändert ...
    Compilerzeit - vielleicht minimal, aber was ist das schon in den Zeiten des P4 😃

    M.T.



  • Original erstellt von Manuel:
    Compilerzeit - vielleicht minimal, aber was ist das schon in den Zeiten des

    Ne ganze Menge wenn das Projekt größer wird. Wenn du für jeden kleinen Fehler ne halbe Stunde kompilieren musst dann viel Spaß

    [ Dieser Beitrag wurde am 04.04.2003 um 18:56 Uhr von MaSTaH editiert. ]



  • Die Laufzeit ist natürlich überhaupt nicht davon betroffen.


Anmelden zum Antworten