Consiglio vivamente per chi non l'ha fatto di leggere la serie di post The Build Your Own CAB Series di Jeremy Miller, sono ricchi di spunti per migliorare il design delle proprie applicazioni.
Ho scaricato i sorgenti del progetto StoryTeller per vedere un'applicazione che applicasse i principi sopra indicati.
Iniziamo ad dare un'occhiata all'organizzazione della solution:
Mi piace l'idea di mettere tutti i progetti di test sotto un folder, inoltre gli assembly mi sembrano suddivisi bene, basta leggerne il nome per avere un'idea di cosa contengano.
Proviamo ad espandere il nodo del progetto StoryTeller:
Anche qui a colpo d'occhio il contenuto è abbastanza autoesplicativo ed ancora non ho letto nessuna documentazione di cosa faccia l'applicazione. Proviamo a guardare il dominio:
Dal nome delle classi si capisce che il progetto ha a che fare con i test, guardando la classe Hierarchy si vede che i sistemi sotto test sono organizzati in maniera gerarchica.
E' stato applicato il pattern Visitor.
Le dipendenze tra le classi concrete non sono dirette ma tramite interfacce.
Le classi hanno pochi metodi con poche righe di codice e dal nome del metodo si riesce ad intuire l'operazione eseguita.
Se guardiamo l'UI vediamo che è stato applicato l'MVC.
La form di partenza è la ApplicationShell che dipende dall'ApplicationController.
E' stato usato un framework di IoC.
Lo sviluppo dell'applicazione non è ancora finito ci sono diverse classi ancora in progress, ma consiglio comunque di darci un'occhiata.
Conoscete altri progetti Open che secondo voi vanno presi come esempio?