Wie wir entscheiden, wann wir refactoren und wann wir neu schreiben
Jeder Entwickler steht irgendwann vor diesem Moment.
Die Codebasis ist langsam. Das Hinzufügen neuer Funktionen dauert zu lange. Neue Mitarbeiter haben Schwierigkeiten, das System zu verstehen. Irgendwann schlägt jemand einen kompletten Rewrite vor.
Das Team spaltet sich meist in zwei Gruppen. Die eine Gruppe möchte von vorne anfangen. Die andere Gruppe fürchtet das Scheitern vergangener Rewrites. Beide Seiten haben berechtigte Argumente.
Ein Rewrite ist kein Allheilmittel. Er dauert oft länger als geplant. Am Ende muss man zwei Systeme gleichzeitig warten. Man macht in der neuen Version vielleicht sogar dieselben Fehler wie zuvor.
Ein Rewrite ergibt in diesen spezifischen Fällen Sinn:
• Das Datenmodell ist für das Geschäft grundlegend falsch. • Die Technologie ist veraltet und erhält keine Sicherheitsupdates mehr. • Die geschäftlichen Anforderungen haben sich so stark verändert, dass das ursprüngliche System obsolet ist. • Niemand im aktuellen Team versteht, wie das System funktioniert.
Selbst dann sollte man keinen „Big-Bang“-Austausch vornehmen. Nutzen Sie das „Strangler Fig Pattern“. Bauen Sie das neue System Stück für Stück parallel zum alten auf.
Meistens ist eigentlich ein Refactoring nötig.
Refactoring ist die richtige Wahl, wenn:
• Man noch Funktionen hinzufügen kann, auch wenn es langsam geht. • Das Team den aktuellen Code versteht. • Das Chaos auf bestimmte Module beschränkt ist. • Das Unternehmen die Auslieferung neuer Funktionen nicht stoppen kann.
Bevor Sie sich entscheiden, fragen Sie sich, warum der Code schlecht geworden ist.
Wenn das Problem technische Schulden sind, refactoren Sie die schlimmsten Teile. Wenn das Problem mangelnde Code-Reviews oder eine schlechte Kultur sind, wird ein Rewrite nicht helfen. Sie werden lediglich mit denselben alten Gewohnheiten ein neues Chaos erschaffen.
Stellen Sie sich vor der Entscheidung folgende Fragen:
• Können wir die schlimmsten Teile isoliert beheben? • Ist das Datenmodell für die aktuellen geschäftlichen Anforderungen ungeeignet? • Welches Wissen verlieren wir, wenn wir von vorne anfangen? • Verfügt das Unternehmen über die nötige Stabilität, um eine lange Übergangsphase zu bewältigen?
Von vorne anzufangen fühlt sich gut an. Den Rewrite abzuschließen, ist der schwierige Teil. Meistens ist ein strukturierter Refactoring-Plan sicherer und effektiver.
Quelle: https://dev.to/daviefano/how-we-decide-when-to-refactor-and-when-to-rewrite-40pk