Ich habe unsere aktuelle Projektarchitektur entwickelt und angefangen, sie selbst zu entwickeln (so etwas wie, revision 40
) .
Wir entwickeln ein einfaches U-Bahn-Routing-Framework und mein Design schien sehr gut zu funktionieren. Mehrere Hauptmodelle, entsprechende Ansichten, Hauptlogik- und Datenstrukturen wurden "wie sie sein sollten" modelliert und vollständig vom Rendering getrennt. Der algorithmische Teil wurde ebenfalls implementiert abgesehen von den Hauptmodellen und hatte eine geringe Anzahl von Schnittpunkten.
Ich würde dieses Design als skalierbar, anpassbar, einfach zu implementieren, hauptsächlich auf der Basis der "Black-Box-Interaktion" interagierend und sehr nett bezeichnen.
Nun, was wurde getan:
- Ich habe einige Implementierungen der entsprechenden Schnittstellen gestartet, einige praktische Bibliotheken portiert und Implementierungsstubs für einige Anwendungsteile geschrieben.
- Ich hatte das Dokument, das den Codierungsstil beschreibt, und Beispiele für diesen Codierungsstil (meinen eigenen geschriebenen Code).
- Ich habe die Verwendung von mehr oder weniger modernen
C++
Entwicklungstechniken erzwungen , einschließlichno-delete
Code (umschlossen mit intelligenten Zeigern) usw. - Ich habe den Zweck konkreter Schnittstellenimplementierungen und deren Verwendung dokumentiert.
- Unit-Tests (hauptsächlich Integrationstests, da es nicht viel "tatsächlichen" Code gab) und eine Reihe von Verspottungen für alle Kernabstraktionen.
Ich war 12 Tage abwesend .
Was haben wir jetzt (das Projekt wurde von 4 anderen Mitgliedern des Teams entwickelt):
- 3 verschiedene Kodierungs Stile der ganzen Projekt (ich glaube, zwei von ihnen bereit erklärt , die gleiche Art zu verwenden :) , Gleiches gilt für die Benennung unserer Abstraktionen (zB
CommonPathData.h
,SubwaySchemeStructures.h
) , die im Grunde sind Header einige Datenstrukturen zu deklarieren. - Absoluter Mangel an Dokumentation für die kürzlich implementierten Teile.
- Was ich in letzter Zeit als "
single-purpose-abstraction
jetzt" bezeichnen konnte, verarbeitet mindestens zwei verschiedene Arten von Ereignissen, ist eng mit anderen Teilen verbunden und so weiter. - Die Hälfte der verwendeten Schnittstellen enthält jetzt Membervariablen
(sic!)
. - Rohe Zeigerverwendung fast überall.
- Komponententests deaktiviert, da "
(Rev.57) They are unnecessary for this project
". - ... (das ist wahrscheinlich nicht alles) .
Die Geschichte von Commit zeigt, dass mein Design als Overkill interpretiert wurde und die Leute begannen, es mit persönlichen Fahrrädern und neu implementierten Rädern zu kombinieren und hatten dann Probleme , Code-Chunks zu integrieren .
Jetzt - das Projekt macht immer noch nur eine kleine Menge von dem, was es zu tun hat, wir haben schwerwiegende Integrationsprobleme, ich nehme einige Speicherlecks an.
Ist in diesem Fall etwas möglich?
Mir ist klar, dass alle meine Bemühungen keinen Nutzen hatten, aber die Frist ist ziemlich bald und wir müssen etwas tun. Hatte jemand eine ähnliche Situation?
Grundsätzlich dachte ich, dass ein guter (nun, ich habe alles getan, was ich konnte) Start für das Projekt wahrscheinlich zu etwas Schönem führen würde, aber ich verstehe, dass ich falsch liege.