Um meine Ansicht zu geben:
Kleine, inkrementelle Änderungen, die den Code in einem besseren Zustand belassen, als er gefunden wurde
Auf jeden Fall Ja: "Kosmetische" Änderungen, die nicht direkt mit Funktionen zusammenhängen (dh sie können nicht als Änderungsanforderung abgerechnet werden).
Auf jeden Fall Nein: Das Umschreiben großer Teile verstößt eindeutig gegen den "kleinen, inkrementellen" Teil. Refactoring wird oft als das Gegenteil eines Umschreibens verwendet: Anstatt es erneut zu tun, verbessern Sie das vorhandene.
Auf jeden Fall vielleicht: Das Ersetzen von Datenstrukturen und Algorithmen ist ein Grenzfall. Der entscheidende Unterschied hier IMO sind die kleinen Schritte: Seien Sie bereit zu liefern, seien Sie bereit, an einem anderen Fall zu arbeiten.
Beispiel: Stellen Sie sich vor, Sie haben ein Report Randomizer-Modul, das durch die Verwendung eines Vektors verlangsamt wird. Sie haben profiliert, dass Vektoreinfügungen der Engpass sind, aber leider ist das Modul an vielen Stellen auf zusammenhängenden Speicher angewiesen, sodass bei Verwendung einer Liste die Dinge stillschweigend kaputt gehen.
Das Umschreiben würde bedeuten, dass das Modul ein besseres und schnelleres Gebäude von Grund auf weggeworfen wird, indem nur einige Teile aus dem alten ausgewählt werden. Oder schreiben Sie einen neuen Kern und fügen Sie ihn dann in den vorhandenen Dialog ein.
Refactoring würde bedeuten, kleine Schritte zu unternehmen, um die Zeigerarithmetik zu entfernen, so dass der Schalter. Vielleicht erstellen Sie sogar eine Dienstprogrammfunktion, die die Zeigerarithmetik umschließt, die direkte Zeigermanipulation durch Aufrufe dieser Funktion ersetzt und dann zu einem Iterator wechselt, sodass sich der Compiler über Stellen beschwert, an denen die Zeigerarithmetik noch verwendet wird, und dann zu a list
wechselt und dann die entfernt Ultilitätsfunktion.
Die Idee dahinter ist, dass Code von selbst schlechter wird. Wenn Sie Fehler beheben und Funktionen hinzufügen, nimmt die Qualität in kleinen Schritten ab - die Bedeutung einer Variablen ändert sich geringfügig, eine Funktion erhält einen zusätzlichen Parameter, der die Isolation aufhebt, eine Schleife wird etwas zu komplex usw. Keiner dieser Fehler ist ein echter Fehler Geben Sie keine Zeilenanzahl an, die die Schleife zu komplex macht, aber Sie beeinträchtigen die Lesbarkeit und Wartung.
Ebenso sind das Ändern eines Variablennamens oder das Extrahieren einer Funktion keine konkreten Verbesserungen für sich. Aber insgesamt bekämpfen sie die langsame Erosion.
Wie eine Kieselwand, an der man jeden Tag zu Boden fällt. Und jeden Tag nimmt ein Passant es auf und legt es zurück.