Für mein Team starte ich in der Regel alle drei bis vier Monate einen Refactoring-Sprint. Wenn man bedenkt, dass wir 2-wöchige Sprints fahren, ist das ein Refactoring-Sprint, etwa alle sieben Sprints.
Ich laufe den Refactoring Sprint wie jeden anderen Sprint - streng 2 Wochen Zeitlimit. Manchmal laufen wir sogar nur 1 Woche Refactoring Sprints (wenn etwas Dringendes kommt).
Ein Hinweis auf Refactoring Sprint: nicht zu ehrgeizig sein:
- Erkennen, dass Refactoring eine unendliche Zyklus ist: Sie werden immer einen besseren Weg finden, Dinge zu tun.
- Es ist in Ordnung, wenn Sie nur 10% refaktorieren, was refaktoriert werden muss.
- Behandeln Sie Refactoring wie alle anderen Storys, so dass Sie Prioritäten setzen müssen, was zu refaktorieren ist, und erkennen Sie, wo in Ihrem Code am meisten Refactoring erforderlich ist. Der einzige Unterschied besteht darin, dass ich die Entwickler beim Refactoring von Storys Prioritäten setzen ließ.
- Ein partieller Refactor lässt Ihren Code immer noch in einem besseren Zustand als keinen Refactor. Außerdem erleichtert es das weitere Refactoring.
- Das Refactoring passiert auch außerhalb von Refactoring-Sprints, wenn an Stories gearbeitet wird, aber nur, wenn das Refactoring eine tief hängenden Frucht ist, die die Fertigstellung von Stories nicht beeinträchtigt.
Dies ist, was ich persönlich als Leitfaden zum Refactoring verwenden. Es macht das Refactoring nicht nur beherrschbar, sondern ist auch ein guter Indikator dafür, wann man es übertreibt.
+1 Mehr wenn ich könnte - es macht mich traurig, wenn agile eine rep schlecht architected Code bekommt, wenn agile mit TDD * explizit ist * entwickelt, um die verbessern Code-Architektur durch kontinuierliche Verbesserung. –
Ich stimme nicht zu, TDD wird oft nicht gut ausgerichtete Systeme gleichsetzen. TDD sollte auch als "wenn angebracht" -Ansatz verwendet werden. Während ich mit Rot-Grün-Refraktor zustimme, glaube ich, eine Menge Leute hängen auf diese und als Folge - Entwicklung deutlich verlängern. TDD ist ideal für die Fokussierung auf Mikro-Teile einer App. Es wird sich natürlich erweitern und in einen besser gestalteten Workflow wachsen, aber das führt nicht immer zu einem guten Makro-Design. Sprint Level Refraktoren sind dafür von entscheidender Bedeutung. – Chance
@Chance: (1) ** Jede Methode, die nur schlecht angewendet oder falsch angewandt wird, führt zu einem schlecht aufgebauten und geschriebenen System. (2) TDD ist eine Entwicklungsmethodik, die oft innerhalb eines agilen Gesamtprozesses angewendet wird, und mein Kommentar, wenn Sie ihn lesen, sprach von der Ausgabe von ** agiler Entwicklung **, nicht speziell TDD. Wenn Sie versuchen, TDD zu verwenden, um Probleme auf höherer Ebene wie architektonische Probleme zu lösen, werden Sie scheitern. TDD entspricht nicht immer einem gut durchdachten System, genau wie ein Fahrversuch die Fähigkeit, ein Omelett zu kochen, niemals misst! Aber gut gemacht TDD ** verschärft nicht die Situation. –