Drei gute Gründe für ein Refactoring:
- Ihr ursprünglicher Entwurf (vielleicht in einem sehr kleinen Bereich, aber dennoch ein Entwurf) war falsch. Dies gilt auch für Fälle, in denen Sie einen gemeinsamen Vorgang entdecken und Code gemeinsam nutzen wollen.
- Sie entwerfen iterativ.
- Der Code ist so schlecht, dass er grundlegend überarbeitet werden muss.
Drei gute Gründe, nicht zu refaktorisieren:
- "Das sieht ein bisschen unordentlich aus".
- "Ich bin nicht ganz einverstanden mit der Art und Weise, wie der letzte Mann das gemacht hat".
- "Es könnte effizienter sein". (Das Problem dabei ist das "vielleicht").
"Unordentlich" ist umstritten - es gibt ein stichhaltiges Argument, das als "Reparieren von kaputten Windows" oder "Codehygiene" bezeichnet wird und besagt, dass man, wenn man kleine Dinge schleifen lässt, auch große Dinge schleifen lassen wird. Das ist in Ordnung und eine gute Sache, die man im Hinterkopf behalten sollte, aber denken Sie daran, dass es eine Analogie ist. Sie entschuldigt nicht, dass man auf der Suche nach einer möglichst sauberen Lösung endlos herumhantiert.
Wie oft Sie Refactoring durchführen, sollte davon abhängen, wie oft die guten Gründe dafür auftreten und wie sicher Sie sind, dass Ihr Testprozess Sie vor der Einführung von Fehlern schützt.
Refactoring ist nie ein Ziel an sich. Aber wenn etwas nicht funktioniert, muss es behoben werden, und das gilt für die Erstentwicklung ebenso wie für die Wartung. Bei nicht-trivialen Änderungen ist es fast immer besser, zu refaktorieren und die neuen Konzepte sauber einzubauen, als an einer einzigen Stelle einen großen Haufen Schrott zu flicken, um Änderungen an anderer Stelle zu vermeiden.
Ich halte nichts davon, eine Schnittstelle zu ändern, wenn ich weiß, wofür sie verwendet wird, und wenn der Umfang der Änderung überschaubar ist.