J'ai développé notre architecture de projet actuelle et j'ai commencé à la développer par moi-même (en atteignant quelque chose comme, revision 40
) .
Nous développons un cadre de routage de métro simple et ma conception semblait extrêmement bien faite - plusieurs modèles principaux, les vues correspondantes, la logique principale et les structures de données ont été modélisés "comme ils devraient être" et entièrement séparés du rendu, une partie algorithmique a également été mise en œuvre en dehors des modèles principaux et avait un nombre mineur de points d'intersection.
J'appellerais cette conception évolutive, personnalisable, facile à implémenter, interagissant principalement sur la base de l '"interaction boîte noire" et, enfin, très agréable.
Maintenant, ce qui a été fait:
- J'ai commencé quelques implémentations des interfaces correspondantes, porté quelques bibliothèques pratiques et écrit des talons d'implémentation pour certaines parties d'application.
- J'avais le document décrivant le style de codage et des exemples de cette utilisation du style de codage (mon propre code écrit).
- J'ai forcé l'utilisation de
C++
techniques de développement plus ou moins modernes , y compris leno-delete
code (enveloppé via des pointeurs intelligents), etc. - J'ai documenté le but des implémentations d'interfaces concrètes et comment elles devraient être utilisées.
- Des tests unitaires (principalement des tests d'intégration, car il n'y avait pas beaucoup de code "réel") et un ensemble de simulations pour toutes les abstractions de base.
J'étais absent pendant 12 jours .
Qu'avons-nous maintenant (le projet a été développé par 4 autres membres de l'équipe):
- 3 styles de codage différents dans tout le projet (je suppose que deux d'entre eux ont accepté d'utiliser le même style :) , il en va de même pour la dénomination de nos abstractions (par exemple
CommonPathData.h
,SubwaySchemeStructures.h
) , qui sont essentiellement des en-têtes déclarant certaines structures de données. - Manque absolu de documentation pour les pièces récemment implémentées.
- Ce que je pourrais récemment appeler un
single-purpose-abstraction
gère désormais au moins 2 types d'événements différents, a un couplage étroit avec d'autres parties et ainsi de suite. - La moitié des interfaces utilisées contiennent désormais des variables membres
(sic!)
. - Utilisation du pointeur brut presque partout.
- Tests unitaires désactivés, car "
(Rev.57) They are unnecessary for this project
". - ... (ce n'est probablement pas tout) .
L'histoire des commits montre que ma conception a été interprétée comme une surpuissance et les gens ont commencé à la combiner avec des vélos personnels et des roues réimplémentées, puis ont eu des problèmes d' intégration des morceaux de code.
Maintenant - le projet ne fait encore qu'une petite partie de ce qu'il doit faire, nous avons de graves problèmes d'intégration, je suppose que certaines fuites de mémoire.
Y a-t-il quelque chose à faire dans ce cas?
Je me rends compte que tous mes efforts n'ont eu aucun avantage, mais le délai est assez proche et nous devons faire quelque chose. Quelqu'un avait-il une situation similaire?
Fondamentalement, je pensais qu'un bon début (enfin, j'ai fait tout ce que je pouvais) pour le projet conduirait probablement à quelque chose de bien, cependant, je comprends que je me trompe.