Ich arbeite eine kleine bis mittlere Legacy Code - Basis und wenn es auf einem Ticket arbeiten werde ich über Code kommen , die aufgeräumte werden soll oder dass wir brauchen , um clean-up nur in der Lage zu sein , die Folge der Anwendung zu verstehen.
Ein echtes Beispiel ist:
if( !a && b ){
doSomething1();
doSomething2();
doSomething3();
doSomething4();
doSomething5();
}else if( a ){
doSomething1();
doSomething2();
doSomething3();
doSomething4();
doSomething5();
}else if( !b && ( a || c ) ){
doSomething1();
doSomething2();
doSomething3();
doSomething4();
doSomething5();
}
Eine andere Möglichkeit besteht darin, Tippfehler und Engrish in Kommentaren und Dokumentationen in einem Dutzend Quelldateien zu beheben.
Oft hängt diese Bereinigung jedoch nicht mit dem Hauptproblem zusammen, und ich frage mich, wie es am besten ist, die Bereinigung durchzuführen. So wie ich das sehe, gibt es drei Möglichkeiten:
- Vor dem Fix: Dies funktioniert chronologisch, da dies die Reihenfolge ist, in der sie auftreten. Wenn sie jedoch etwas beschädigen, erschweren sie den Fix und es ist schwieriger, den Fix von dem zu unterscheiden, was in der Produktion war. Außerdem wird ein zusätzliches Commit eingeführt, das Rauschen ist.
- Mit dem Fix: aber das verdeckt den tatsächlichen Ersatz von fehlerhaftem Code durch Dateien, wo
findGeoragphy
das richtig warfindGeography
. - Nach dem Fix: Dies erfordert das Entfernen und Bereinigen, das Sie vorgenommen haben, um den Code besser zu verstehen, und das erneute Testen des Fixes, das Festschreiben des Fixes und das Zurückgehen und Wiederholen der Bereinigung. Dies ermöglicht den saubersten Unterschied zum fehlerhaften Code, verdoppelt jedoch den Aufwand und kann auch zu falschen Commits führen.
tl; dr: Also, was ist die beste Methode, um Bereinigungscode festzuschreiben?
Kontext: Wir haben keine Unit-Tests und Entwicklungsfortschritte, indem wir Änderungen ausführen, sie in Augenschein nehmen und sie zur Qualitätssicherung über die Mauer werfen, um sie durch manuelle Regressionskorrekturen zu validieren. Wenn wir keine Formularbereinigungen durchführen, wird der Code unverständlich. Ich weiß, dass dies alles andere als ideal ist, aber dies ist ein echter Unternehmensentwickler, der Essen auf meinen Tisch legt und nicht meine Wahl.