Hi zusammen, in einem vorhandenen c++ Projekt wird z.Z. folgende Projektstruktur verwendet: include folder: NamespaceAObject.h NamespaceBObject.h src folder: NamespaceAObject.cpp NamespaceBObject.cpp Wenn mehrere geschachtelte Namespaces existieren so tauchen entsprechend alle Namen im Filename auf. Die Filenames werden lang und unübersichtlich. Meine Idee war nun die Struktur wie folgt zu ändern: include folder: NamespaceA folder: Object.h NamespaceB folder: Object.h src folder: NamespaceA folder: Object.cpp NamespaceB folder: Object.cpp d.h. die Namespaces werden aus dem Filename entfernt und spiegeln sich in der subfolder Struktur wieder. Nun ergibt sich aber das Problem das es source Files gibt die gleich heissen ( -> Object.cpp ) dementsprechend werden die Object Files überbügelt und es gibt Linkerfehler... - Welche Projektstruktur würder ihr mir empfehlen ? - Welche Möglichkeiten habe ich Object Filenames eindeutig zu machen ?
Um was für eine Projektgröße handelt es sich? Ich bearbeite nur kleine Projekte (30 Files, 10.000 Zeilen -> 50kB Code). Da kommt alles in ein Projektverzeichnis und die Namen sind möglichst kurz (Main.c, UART0.c, Timer0.c, DAC.c). Generell sollten alle Files eines Projekts unterschiedlich heißen. Gleiche Namen in unterschiedlichen Verzeichnissen werden irgendwann Ärger machen. Peter
Dateinamen eindeutig halten. Auf keinen Fall den Verzeichnisnamen als wesentliches Unterscheidungskriterium nutzen, es sei denn es handelt sich um Objekte mit identischer Funktionalität für unterschiedluiche Konfigurationen. Hat man zb LCD Routinen für Display A und Display B, dann kann man darüber nachdenken, identische Filenamen zu verwenden. Das hat beim Austausch eines Displays von A nach B gewissen Vorteile, die sich aber ins Gegenteil verwandeln, wenn man mal beide Displays gemeinsam in einem Program benötigt. Als hingegen völlig unnötig und auch kontraproduktiv halte ich hingegen die Trennung von Src-Files und Header-Files in verschiedene Verzeichnisse. Ausser möglichem Ärger bringt das nichts. Lass zusammengehörende Teile beisammen! Header File und Src-Files gehören nun mal zusammen. Erstell man keine Objekt-Library, dann macht das eine ohne das andere überhaupt keinen Sinn. Man hat dann nur Ärger, weil man beim Umkopieren immer wieder einmal eine der beiden Komponenten vergisst.
Schonmal vielen Dank für eure Vorschläge. D.h. um die ganze Sache übersichtlicher zu gestalten könnte ich Unterordner einfügen. Die Filenamen belasse ich dann in ihrer bisherigen Form damit sie eindeutig bleiben. c und h Files habe ich bisher getrennt um die Übersichtlichkeit zu erhöhen. Das Gesamtprojekt hat einem Umfang von einigen hundert Files und ~60K LOC ( allerdings aufgeteilt in mehrere Libs ).
Maik schrieb: > c und h Files habe ich bisher getrennt um die Übersichtlichkeit zu > erhöhen. Das ist nicht wirklich übersichtlicher. Das wird nur in der Verwendung 'komplizierter', weil man beim Hinzufügen von Files in ein neues Projekt ständig den Ordern von dem man hinzufügen will, wechseln muss. So sind beide Files beisammen auf einem Verzeichnis und man merkt soger Tippfehler im Filenamen viel leichter, weil zusammengehörende Files in der Fileselektion (nach Namen sortiert) nicht mehr beieinander stehen. > Das Gesamtprojekt hat einem Umfang von einigen hundert Files und ~60K > LOC ( allerdings aufgeteilt in mehrere Libs ). Und? Ist noch nicht wirklich groß. Zerteile als erstes die Files, die zu einer LIb gehören in verschiedene Verzeichnisse. Und schon brauchst du dich dann in der Organisation nur noch um eine Lib nach der anderen kümmern. Aus den paar hundert Files, werden so ganz schnell <100.
Karl heinz Buchegger schrieb: > Und? Ist noch nicht wirklich groß. > Zerteile als erstes die Files, die zu einer LIb gehören in verschiedene > Verzeichnisse. Und schon brauchst du dich dann in der Organisation nur > noch um eine Lib nach der anderen kümmern. Aus den paar hundert Files, > werden so ganz schnell <100. Zumindest so gross das es schon mit Arbeit verbunden ist es zu ändern. Ich verstehe noch nicht ganz wie du das meinst. Das Projekt besteht schon aus mehreren Libs. Die Funktionalität der Libs ist sinnvoll getrennt. Nur die Organisation innerhalb der Libs möchte ich optimieren. Oder meintest du das ?
Maik schrieb: > Ich verstehe noch nicht ganz wie du das meinst. Das Projekt besteht > schon aus mehreren Libs. Die Funktionalität der Libs ist sinnvoll > getrennt. Das ist doch schon mal die halbe Miete (eigentlich sogar mehr :_) > Nur die Organisation innerhalb der Libs möchte ich optimieren. > Oder meintest du das ? Ich ging davon aus, dass momentan alle Files (aller Libs) auf ein und demselben Verzeichnis liegen. Wenn dem so ist: Dann erst mal für jede Lib ein Subverzeichnis anlegen und die Files entsprechend ihrer Zugehörigkeit zur jeweiligen Lib ins richtige Subverzeichnis verschieben. Damit hast du dann schon einen Grossteil der Arbeit erledigt. Ach und noch was: Versuch jetzt nicht, nach der 'optimalen' Struktur zu suchen und darüber großartig zu philosophieren. Mach einfach das, was dir zur Zeit am vernünftigsten erscheint. 'Optimal' wird es sowieso nie und man kann Tage damit verbringen, Librarystrukturen umzugestalten um dann am Ende wieder beim Anfang zu landen :-)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.