Michael Feathers
Schlüsselwerk: Working Effectively with Legacy Code (2004)
Die prägende Idee
Abschnitt betitelt „Die prägende Idee“Legacy Code ist nicht alter Code. Legacy Code ist Code ohne Tests. Und Code ohne Tests ist Code, den man nicht sicher ändern kann.
Feathers hat systematisiert, wie man in einem System arbeiten kann, das man nicht vollständig versteht — und das keine Sicherheitsnetze hat.
Was in Projekten relevant wurde
Abschnitt betitelt „Was in Projekten relevant wurde“- Seams: Jeder Ort im Code, wo man das Verhalten ändern kann, ohne den Code selbst zu ändern. Dependency Injection als Frontend-Seam.
- Charakterisierungstests: Man schreibt Tests, um zu verstehen, was der Code macht — nicht um zu verifizieren, was er sollte. Dann refactort man.
- Sprout Method / Sprout Class: Neue Funktionalität als neue Methode/Klasse, nicht durch Änderung bestehenden Codes. Safe bei Zero Test Coverage.
Die praktische Lehre
Abschnitt betitelt „Die praktische Lehre“In Projekten mit Legacy-Code ist „sauber machen” keine realistische erste Option. Feathers zeigt, wie man sich inch-by-inch in Richtung Testbarkeit bewegt, ohne das System zu zerstören.
Das ist unangenehm langsam. Es ist aber sicherer als der große Refactoring-Schwung, der nie fertig wird.