Ho sviluppato la nostra attuale architettura di progetto e ho iniziato a svilupparla sul mio (raggiungendo qualcosa come, revision 40
) .
Stiamo sviluppando un semplice framework di instradamento della metropolitana e il mio progetto sembra essere fatto molto bene - diversi modelli principali, viste corrispondenti, logica principale e strutture dati sono state modellate "come dovrebbero essere" e completamente separate dal rendering anche la parte algoritmica è stata implementata separatamente dai modelli principali e aveva un numero minore di punti di intersezione.
Chiamerei quel design scalabile, personalizzabile, facile da implementare, interagendo principalmente sulla "interazione black box" e, beh, molto bello.
Ora, cosa è stato fatto:
- Ho avviato alcune implementazioni delle interfacce corrispondenti, ho portato alcune librerie convenienti e ho scritto stub di implementazione per alcune parti di applicazione.
- Ho avuto il documento che descrive lo stile di codifica e alcuni esempi dell'uso dello stile di codifica (il mio codice scritto).
- Ho forzato l'utilizzo di tecniche di sviluppo
C++
più o meno moderne, incluso il codiceno-delete
(impacchettato tramite puntatori intelligenti) e così via. - Ho documentato lo scopo delle concrete implementazioni dell'interfaccia e come dovrebbero essere utilizzate.
- Test di unità (principalmente test di integrazione, perché non c'era molto codice "effettivo") e un set di mock per tutte le astrazioni di base.
Sono rimasto assente per 12 giorni .
Cosa abbiamo ora (il progetto è stato sviluppato da altri 4 membri del team):
- 3 diversi stili di codifica per tutto il progetto (immagino, due di essi hanno accettato di usare lo stesso stile:) , lo stesso vale per la denominazione delle nostre astrazioni (ad es.
CommonPathData.h
,SubwaySchemeStructures.h
) , che sono fondamentalmente intestazioni che dichiarano alcune strutture di dati. - Assoluta mancanza di documentazione per le parti implementate di recente.
- Quello che potrei chiamare di recente un
single-purpose-abstraction
ora gestisce almeno 2 diversi tipi di eventi, ha un accoppiamento stretto con altre parti e così via. - La metà delle interfacce utilizzate ora contiene le variabili membro
(sic!)
. - Utilizzo puntatore crudo quasi ovunque.
- Test di unità disabilitati, perché "
(Rev.57) They are unnecessary for this project
". - ... (probabilmente non è tutto) .
La cronologia dei commit mostra che il mio design è stato interpretato come un eccessivo e le persone hanno iniziato a combinarlo con biciclette personali e ruote reimplementate e poi hanno avuto problemi di integrazione di blocchi di codice .
Ora - il progetto fa ancora solo una piccola parte di ciò che deve fare, abbiamo gravi problemi di integrazione, presumo alcune perdite di memoria.
C'è qualcosa che puoi fare in questo caso?
Capisco che tutti i miei sforzi non hanno avuto alcun beneficio, ma la scadenza è abbastanza presto e dobbiamo fare qualcosa. Qualcuno ha avuto una situazione simile?
Fondamentalmente ho pensato che un buon (beh, ho fatto tutto quello che potevo) iniziare per il progetto avrebbe probabilmente portato a qualcosa di carino, tuttavia, capisco che mi sbaglio.