Nachdem ich gerade die ersten vier Kapitel von Refactoring: Improving the Design of Existing Code gelesen hatte, begann ich mit meinem ersten Refactoring und kam fast sofort zu einer Straßensperre. Es beruht auf der Anforderung, dass Sie vor dem Refactoring Unit-Tests um den Legacy-Code herum platzieren sollten. Dadurch können Sie sicher sein, dass Ihr Refactoring nicht geändert hat, was der ursprüngliche Code getan hat (nur wie es tat es).Praktisches Refactoring mit Unit Tests
Meine erste Frage lautet also: Wie teste ich eine Methode im Legacy-Code? Wie kann ich einen Komponententest um eine 500-Linien-Methode (wenn ich Glück habe) setzen, die nicht nur eine Aufgabe erfüllt? Es scheint mir, dass ich meinen Legacy-Code umgestalten müsste, nur um ihn testbar zu machen.
Hat jemand irgendwelche Erfahrungen mit Refactoring Unit Tests? Und wenn ja, haben Sie praktische Beispiele, die Sie mit mir teilen können?
Meine zweite Frage ist etwas schwer zu erklären. Hier ein Beispiel: Ich möchte eine Legacy-Methode umgestalten, die ein Objekt aus einem Datenbankeintrag auffüllt. Müsste ich nicht einen Komponententest schreiben, der ein mit der alten Methode abgerufenes Objekt mit einem Objekt vergleicht, das mit meiner refaktorierten Methode abgerufen wurde? Wie würde ich sonst wissen, dass meine refaktorierte Methode die gleichen Ergebnisse wie die alte Methode liefert? Wenn das wahr ist, wie lange belasse ich dann die alte veraltete Methode im Quellcode? Schläge ich es einfach, nachdem ich ein paar verschiedene Platten getestet habe? Oder muss ich es für eine Weile behalten, falls ich einen Fehler in meinem refaktorierten Code erhalte?
Zuletzt, da ein paar Leute gefragt haben ... der Legacy-Code wurde ursprünglich in VB6 geschrieben und dann mit minimalen Änderungen der Architektur zu VB.NET portiert.
Große Frage. Sie können auch versuchen, Katas, die Ihnen hilft, eine Angewohnheit zu schreiben einen guten Code und wie Sie Einheit getestet Code schreiben: https://github.com/garora/TDD-Katas –