Per la mia squadra di solito inizio uno sprint di sprint approssimativamente una volta ogni tre o quattro mesi. Considerando che eseguiamo sprint di due settimane, questo è uno sprint di sprint approssimativamente ogni sette sprint.
Corro lo sprint di refactoring come qualsiasi altro sprint - rigorosamente a 2 settimane di tempo. A volte eseguiamo anche solo una settimana di sprint di refactoring (quando arriva qualcosa di urgente).
Una nota sulla sprint di refactoring: non essere troppo ambizioso:
- Rendetevi conto che refactoring è un ciclo infinito: troverete sempre un modo migliore per fare le cose.
- Va bene se si refactoring solo il 10% di ciò che deve essere refactored.
- Trattate il refactoring come qualsiasi altra storia in modo che siate costretti a dare la priorità a cosa rifattorizzare e riconoscere dove nel vostro codice è più necessario il refactoring. L'unica differenza è che per le storie di refactoring ho lasciato agli sviluppatori la priorità.
- Un refactoring parziale lascerà il tuo codice in uno stato migliore di nessun refactoring. Inoltre, tende a rendere più semplice il refactoring.
- Il refactoring avviene anche al di fuori degli sprint di refactoring quando si lavora su storie, ma solo se il refactoring è un frutto a basso impatto che non interferisce con il completamento delle storie.
Questo è quello che uso personalmente come guida per il refactoring. Non solo rende il refactoring gestibile, ma serve anche come un buon indicatore per quando si sta esagerando.
uno più se potessi - mi rende triste quando agile ottiene un rappresentante di codice mal architettato, quando agile con TDD è * esplicitamente * progettato per migliorare la architettura del codice attraverso il miglioramento continuo. –
Non sono d'accordo, il TDD spesso non identifica i sistemi ben architettati. Inoltre, TDD dovrebbe essere usato come approccio "quando appropriato". Mentre sono d'accordo con il rifrattore rosso-verde, credo che un sacco di persone rimangano appese a questo e, di conseguenza, prolungino significativamente lo sviluppo. TDD è ideale per concentrarsi su micro porzioni di un'app. Ovviamente si espanderà e si svilupperà in un flusso di lavoro più ben progettato, ma ciò non porta in realtà a un buon progetto macro. I rifrattori a livello di sprint sono fondamentali per questo. – Chance
@Chance: (1) ** Qualsiasi ** metodologia applicata in modo errato o erroneamente applicata porterà a un sistema mal progettato e scritto. (2) TDD è una metodologia di sviluppo che viene spesso applicata all'interno di un processo generale agile e il mio commento, se lo leggete, parlava dell'output di ** sviluppo agile **, non specificamente di TDD. Se provi a usare TDD per risolvere problemi di livello superiore come quelli architettonici, fallirai. TDD non ** ** mai equivale a sistemi ben architettati, proprio come un test di guida non misura mai la capacità di cucinare una frittata! Ma il TDD ben fatto fa ** non ** esacerbare la situazione. –