-
Quali tecniche, quali invenzioni e quali scoperte fanno parte della tua Arte di Programmare?
Dargli un nome, renderle esplicite e consapevoli, condividerle e confrontarle è più utile e vantaggioso di quanto potessi immaginare. Comincio con il condividere le mie e aspetto di conoscere nei comments anche quelle degli altri.
Alcune tecniche che in passato ho "inventato" e usato e ora vedo che anche altri hanno sviluppato e gli hanno dato un nome:
- Delta debugging
Una ricerca dicotomica sulla history del codice per trovare la modifica che ha causato il bug
- L'ho pensato e usata dal 1998, con la diffusione dei repository versionati di codice (VSS, cvs, svn, ...), come pratica manuale di debugging.
- Latent Code Patterns
Un modo per fare check-in continui e frequenti di codice rilasciabile senza bisogno di branch nel repository
- Event Sourcing
La tecnica di catturare tutti i cambiamenti di stato di un sistema registrando la sequenza di eventi che la provoca per poterne fare il Replay a piacere.
- Abbiamo utilizzato estensivamente questa tecnica nel 2008 i colleghi Nadia, Andrea e Giancarlo ed io durante la modifica di 2 componenti critici di middleware che comunicano con sistemi esterni complessi e con molti client interni diversi e di diverse versioni. E' stata indispensabile per fare i test regressivi e funzionali dei sw pur in assenza dei sistemi esterni ( a meno di non far girare una macchina di F1 per fare i nostri test :D ).
- Questa tecnica l'ho sentita descritta per la prima volta da Fowler in una conferenza qui a Stoccolma un paio di mesi fa e l'ho trovata descritta nel documento on-line risalente al 2005
Due "scoperte" che ho fatto e che non ho ancora ritrovato da nessuna parte:
- Mockist-TDD Generative rules
Applicando il mockist-TDD (aka interaction-based o behavior-based) si ottiene codice che aderisce ai principi di design S.O.L.I.D.
- Nel 2006 ho osservato dai corsi di OO fatti al team che sono rimasti argomento per discussioni teoriche mentre nel 2007 i colleghi Paolo e Gerri si sono uniti al team e hanno insegnato la pratica del mockist-TDD ad alcuni membri del team e da subito il codice prodotto è risultato aderente ai principi S.O.L.I.D.
- La simmetria dei Design Patterns
Per ogni design pattern che si applica alla composizione ne esiste uno equivalente per l'editarietà e vivecersa