Tempo fa’ (tanto tempo), un mio amico per cui nutro grandissima stima, mi ha consigliato un libro molto interessante in cui, molti dei Design Pattern che oggi si utilizzano, vengono spiegati ed approfonditi cosi attentamente da risultare praticamente impossibile non capire cosa c’è scritto.

Sto parlando di un libro intitolato Patterns of Enterprise Application Architecture di Martin Fowler, uno dei migliori acquisti che abbia mai fatto!

Oggi, a distanza di moltissimo tempo (circa 6 mesi), ho rimesso mani su un progetto di cui, io stesso, l’autore, ne avevo dimenticato completamente l’esistenza. Un sistema abbastanza complesso per l’elaborazione di dati provenienti da diverse sorgenti, un contenitore di informazioni allo stato puro, un “Tracking System”, un fattorino, un sistema di lavaggio, in somma una miriade di funzionalità, si documentate (da un analisi allegata sempre scritta da me), ma… come fai a distanza di 6 mesi a metterci mani per modificare il codice?

Mi collego al magnifico (si fa’ per dire, prenderei volentieri a pugni colui che ha inventato questo sistema di versioning) Microsoft Visual Source Safe aziendale e scarico tutto il progetto, durante l’operazione di Download inizio già ad avere la pelle d’oca, i file sono tantissimi, ed inizio a pensare “Da dove devo iniziare?”.

Completato l’allineamento apro la Soluzione e SORPRESA!

Ritrovo un progetto che mi ricorda tanto ASP.NET MVC (peccato che lo stesso progetto è realizzato, per questioni di Legacy, in .Net Framework 2.0) per la sua struttura interna:

  • Content
  • Models
  • Views

La mia prima reazione? Un Sorriso, immaginavo di aver messo insieme diverse tecniche e utilizzato molteplici strumenti per realizzare qualcosa di molto molto facile (data la futura previsione di introdurre miei colleghi allo sviluppo dello stesso). Provo ad espandere la voce Models e capisco subito con cosa ho a che fare guardando semplicemente la ripetizione dei suffissi con cui i nomi file si alternano in questa cartella:

  • Entity1.cs
  • Entity1TableGateway.cs
  • Entity2.cs
  • Entity2TableGateway.cs
  • Build.bat

Figo! Non ricordavo di aver usato un Design Pattern (sarebbe stato anormale il contrario in un progetto del genere), la cosa che non capisco è quel Build.bat finale, la cosa simpatica è il commento che 6 mesi prima ci ho lasciato dentro!

/*
 *	Ciao Roberto! Sono sempre io... Roberto, cioè sono tu!
 *	Immaginavo non ti ricordassi di me, ti scrivo, in 
 *	questo commento per darti una fantastica notizia, 
 *	ti basta eseguire questo batch, se hai modificato 
 *	la struttura delle tablle nel db, per rigenerare
 *	l'intera base dati sotto .Net con un misto Design 
 *	Pattern (TableGateway e Transaction Script)
 *	
 *	Tuo, tu.
 */

Si, mi sono commosso davvero tanto leggendo queste parole…. ho riso come un pazzo per 5 minuti! La bellezza dei Design Pattern la si nota per due motivi:

  1. Te ne ricordi facilmente il funzionamento.
  2. Quando hai capito come funziona la giostra, sei in grado di creare la catena di montaggio che la costruisce!