Ordnung in den Dateien
-
Ihr kennt das sicherlich.
Da bastelt man viele Objekte, leite mehrere ab, und dann noch weiter - so kommt man sehr schnell auf >20 klassen und noch mehr mehrfach abgeleitete Angelegenheiten.Mir geht es z.Zt. ziemlich auf den Keks den überblick zu behalten,
noch habe ich ihn, aber in 1 Woche kann das schon vorbei sein.Da ist man ja sehr schnell bei sehr vielen Dateien.
Wie haltet ihr Ordnung in den *.h und *.cpp "Chaos"?
(Das die Dateinamen aussagekräftig sind ist sowieso Voraussetzung.
-
Ich benenne eine Datei immer nach der Klasse bzw. Hauptaufgabe (wenn sie nur eine Sammlung globaler Funktionen enthält), die darin behandelt wird - das reicht normalerweise, um sich orientieren zu können.
@fufgn: Wenn du nichts konstruktives beitragen kannst, sei ruhig.
-
Normalerweise mache ich pro Klasse ein *.hpp und ein *.cpp, wobei der Name dem Klassennamen entspricht.
Wenn du da nicht mehr durchblickst, blickst du wohl eher nicht mehr durch dein Design durch. Im Zweifelsfall lass dir eben eine Übersicht generieren, gibt ja genug Tools, so wie Doxygen dafür.
-
also ich halte es dann noch so, dass ich dazu noch für jeden namespace ein unterverzeichnis erstelle und dann auch relativ kleine namespaces habe, eben pro funktionseinheit ein namespace, auch wenn der nur aus drei klassen besteht (im extremfall).
-
Bisher habe ich das ja so, ich blicke ja durch und habe auch meine aufzeichnungen, Ich hab lediglich bedenken, nicht das ich später nicht mehr durch seh, und dachte, evtl gibts da gute "Developer-Techniken"
-
Implementiere soviel wie möglich im Header. cpp Dateien braucht man eigentlich selten.
-
Ja, und dann mußt du dich mit deinem Compiler/Linker streiten, welches denn nun die korrekte Version einer gegebenen Funktion ist - bei (sehr) kleinen Projekten mag der Ansatz ja noch gehen, aber mit der Einstellung würde ich dich nie an Real-Life-Anwendungen heranlassen.
(in den Header gehören bestenfalls ein paar inline-Hilfsfunktionen und Templates - alles andere wird im CPP-File implementiert)
@Mr. Evil: Besorg dir doch eine gute IDE, die dir hilft, die Übersicht zu behalten

-
hpp schrieb:
Implementiere soviel wie möglich im Header. cpp Dateien braucht man eigentlich selten.
Gute Idee. Da hat man bei kleinen Änderungen richtig schön viel Pause an einem Tag.
-
Normalerweise sollte einem eine vernünftige IDE dabei helfen, den Überblick zu bewahren. Ist das nicht der Fall, ist die IDE auch schlecht. Muß man einfach sagen.
Ich kann in VC++ z.B. mir die Klassen und Funktionen in allen Varianten anziegen lassen: alphabetisch sortiert, nach Namespaces gruppiert. Ich kann Ableitungen sehen usw. Auch kann ich per Klick im Sourcecode zur Definition springen. Und wenn ich VisualAssist habe, kann ich auch im Objektbrowser Klassen suchen: gebe ich "boost." ein, bekomme ich alle Klasse und aus dem Namespace boost. Gebe ich "boost.f" ein, bekomme ich alle Klassen und Namespaces, aus boost::f*.
Wie soll man da bei eignen Projekten den Überblick verlieren, wenn man schon bei Fremdprojekten eine sehr gute UNterstützung bekommt.
Was die Organisation angeht: ich benutze natürlich Namespace, damit kann ich schon mal sehr gut meine Klassen und Funktionen finden (siehe Objektbrowser!). Weiterhin habe ich um eine Dateienexplosion zu verhindern folgendes Konzept (Beispiel!):
Klasse Datei Projekt ----------------------------------------------------------------------- base_button lib/button.hpp lib button inherits base_button lib/button.hpp lib xbutton inherits base_button xbutton.hpp applicationIch mache nicht für jede Spezialisierung eine eigene Datei. Das mache ich nur, wenn ich in einem anderen Projekt bin. Wenn base_button in einer Lib ist, und ich in einer anderen Lib oder Applikation von base_button erbe, muss ich sowieso gezwungenermaßen eine eigene Datei für meine button-Spezialisierung anlegen.