Design principle, dalla teoria alla pratica


La prima volta che ho letto e imparato i principi di disegno, gli ho usati come guida e ispirazione nel mometo di immaginare e disegnare le classi di un sistema, magari mentre le disegnavo in UML.

La seconda volta che ho (ri)imparato i principi di disegno, ho imparato a guardare il codice di una classe e indicare precisamente la riga dove c'é una violazione di un principio, spiegare il perché e indicare come rimuovere la violazione. E per questo mi ha aiutato il TDD.

Questa é la terza volta che sto (ri)imparato i principi di disegno, sto cercando di applicarli strettamente alla Kent Beck, l'inventore del TDD, perseguendo sistematicamente l'eliminazione di ogni duplicazione (tutte le duplicazioni di righe di codice e anche le duplicazioni di logica nel codice) e la completa separazione delle responsabilitá (che porta a ottenere un numero di classi che hanno una sola singola isolata responsabilitá e metodi di meno di 10 righe che fanno una cosa sola).

Questo é fondamentale per essere in grado realmente di accettare cambiamenti dei requisiti anche tardi nel progetto e implementarli efficacemente (cioé potendo intervenire in modo isolato e localizzato in singole parti del codice esistente). E' fondamentale anche per rendere reversibili il maggior numero di scelte irreversibili. e identificare quelle che sono realmente inerentemente irreversibili e identificare l'ultimo momento utile per poter decidere.


Cosa Interessante
- Ho osservato anche che nel TDD il grosso dello sforzo nel applicare i principi di disegno é nella fase di refactoring del ciclo R-G-R. Nel TDD con Mock Objects una parte importante dello sforzo nel applicare i principi di disegno é nella fase Red-Green del ciclo R-G-R per rendere il codice testabile con i mock come prescitto dalla pratica.
- I principi coinvolti principalmente sono SRP, DIP, OCP, Law of Demeter, Separation of concerns
, Encapsulation


Letteratura sul argomento


Conclusioni
- Qual'é la tua esperienza sulla applicazione dei design principle ?
- Se vuoi partecipare a un esperimento di TDD coding per raccoglierere ulteriori prove empiriche riguardo il paper
   che ho appena concluso, contattami




Print | posted @ Thursday, July 15, 2010 2:58 AM

Comments have been closed on this topic.