Ho sviluppato la nostra attuale architettura di progetto e ho iniziato a svilupparla da sola (raggiungendo qualcosa di simile revision 40
) .
Stiamo sviluppando un semplice framework di instradamento della metropolitana e la mia progettazione sembrava essere stata eseguita molto bene: diversi modelli principali, viste corrispondenti, principali logiche e strutture di dati sono stati modellati "come dovrebbero essere" e completamente separati dal rendering, inoltre è stata implementata la parte algoritmica a parte i modelli principali e aveva un numero minore di punti di intersezione.
Lo definirei scalabile, personalizzabile, facile da implementare, interagendo principalmente sulla base dell'interazione "scatola nera" e, beh, molto carino.
Ora, cosa è stato fatto:
- Ho avviato alcune implementazioni delle interfacce corrispondenti, portato alcune librerie convenienti e scritto stub di implementazione per alcune parti dell'applicazione.
- Ho avuto il documento che descriveva lo stile di codifica ed esempi di tale uso di codice (il mio codice scritto).
- Ho forzato l'uso di
C++
tecniche di sviluppo più o meno moderne , incluso ilno-delete
codice (racchiuso da puntatori intelligenti) e così via. - Ho documentato lo scopo di implementazioni di interfaccia concrete e come dovrebbero essere utilizzate.
- Test unitari (principalmente test di integrazione, perché non c'era molto codice "reale") e una serie di derisioni per tutte le astrazioni principali.
Sono stato assente per 12 giorni .
Cosa abbiamo ora (il progetto è stato sviluppato da altri 4 membri del team):
- 3 diversi stili di codifica in tutto il progetto (immagino, due di loro hanno accettato di usare lo stesso stile :) , lo stesso vale per la denominazione delle nostre astrazioni (ad esempio
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 recentemente 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 variabili membro
(sic!)
. - Utilizzo puntatore non elaborato quasi ovunque.
- Test unitari disabilitati, perché "
(Rev.57) They are unnecessary for this project
". - ... (probabilmente non è tutto) .
La storia di Commit mostra che il mio design è stato interpretato come eccessivo e le persone hanno iniziato a combinarlo con biciclette personali e ruote reimplementate e quindi hanno avuto problemi con l' 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 da fare in questo caso?
Mi rendo conto che tutti i miei sforzi non hanno avuto alcun vantaggio, 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 il possibile) per iniziare il progetto avrebbe probabilmente portato a qualcosa di carino, tuttavia, capisco che mi sbaglio.