Red Bar/Green Bar/Refactor
Luca | March 25, 2005Nei giorni scorsi ho fatto Test Driven Development per lo sviluppo di alcune classi che devono generare un file XML partendo da una serie di informazioni; niente di impossibile, ma sicuramente un contesto adeguato perchè libero da “intromissioni” di database e GUI…..ottima palestra per iniziare a fare TDD!!!
Subito le sensazioni: TDD ti obbliga a pensare “fortemente” orientato agli oggetti. Quelle che nello sviluppo tradizionale sono elucubrazioni, qua sono effettivamente guidate da un feedback molto concreto; mi sono trovato a definire un metodo statico all’interno di un oggetto che non avrei mai fatto con i modi tradizionali, e la scelta è risultatta assolutamente correttissima.
Fare TDD non è per niente facile su codice reale: l’abitudine ti porta a
- debuggare
- tracciare il codice (che è sempre una forma di debug)
Con TDD questo non esiste, e la cosa ti mette parecchio in difficoltà quando non riesci a capire perchè certi test non passano; la cosa è moltiplicata dal fatto che con TDD testo i metodi pubblici…ma come faccio a capire se l’errore è su un metodo privato ? (attendo speranzoso risposte…)
L’orientamento agli oggetti che TDD ti da rende veramente più facile ragionare su un design evolutivo: scrivere, rifattorizzare, riscrivere e rifattorizzare ancora è assolutamente naturale con TDD.
Alla fine in circa un giorno e mezzo ho implementato le classi necessarie con i relativi test (una decina); sono parecchio contento della qualità ottenuta, devo ovviamente migliorare sulla scrittura dei tet e sul ritmo nel ciclo barra rossa/barra verde/refactor, ma la prima esperienza con codice reale è assolutamente soddisfacente.





