Komplexe Refactorings mit der Mikado Methode durchführen

[Video] Komplexe Refactorings mit der Mikado Methode

Mit der Mikado Methode lassen sich komplexe Refactorings in kleine Schritte zerlegen. Die Methode basiert zum einen darauf, durch Experimente herauszufinden, welche Voraussetzungen erfüllt werden müssen, bevor die eigentlich gewünscht Änderung umgesetzt werden kann. Zum anderen wird die Versionskontrolle dazu verwendet, immer wieder zu einem bekannten Stand der Codebasis zurückzukehren. Die einzelnen Experimente werden immer wieder entfernt, da sie lediglich dem Erkenntnisgewinn dienen.

Die kniffligen Fälle beim Testen – Exceptions

Im Kontext von automatisierten Tests fallen Exceptions in eine der beiden folgenden Kategorien:
(a) Eine Methode löst selbst eine Exception aus, wenn sie einen Ausnahmezustand entdeckt.
(b) Während der Ausführung einer Methode kann eine Exception auftreten, auf die die Methode reagiert.
Der Beitrag beschreibt, wie solche Fälle automatisiert getestet werden können.

Komplexe Refactorings an Legacy Code durchführen – Teil 2

Im ersten Schritt ist durch eine experimentelle Vorgehensweise ein Mikado Graph entstanden. Es wurde jeweils naiv versucht, die erforderlichen Änderungen am Code durchzuführen. Alle Probleme, die sich bei diesen Experimenten gezeigt haben, sind als Vorbedingungen für das Mikado Ziel in den Mikado Graph übernommen worden. Da die einzelnen Vorbedingungen aufeinander aufbauen, sich also in Abhängigkeiten befinden, enthält der Mikado Graph nicht nur die Vorbedingungen, sondern stellt auch die Abhängigkeiten dar. Lesen Sie im 2. Teil nun mehr zu den Details der Mikado Methode.

Komplexe Refactorings mit der Mikado Methode durchführen

Komplexe Refactorings an Legacy Code durchführen – Teil 1

Dies ist der erste Teil einer Beitragsserie über komplexe Refactorings an Legacy Code Projekten. Er erläutert, welche Herausforderung sich bei komplexen Änderungen zeigen. Anhand einer Bilderserie wird verdeutlich, zu welchen Problemen die übliche Vorgehensweise führt. Im Anschluss wird gezeigt, wie die Herausforderung mit Hilfe der Mikado Methode angegangen werden kann.

Unit Test Explorer

4 Tools, die das automatisierte Testen erleichtern (inkl. Tipps zur Nutzung)

Der Nutzen automatisierter Tests wird inzwischen zwar nicht mehr in Frage gestellt. Doch immer noch treffe ich auf Entwickler, denen es schwer fällt, regelmäßig Tests zu schreiben. Im Beitrag stelle ich 4 Tools vor, mit denen Unit Tests leichter von der Hand geht. Das hilft Ihnen vielleicht dabei, zu einem leidenschaftlichen Tester zu werden.

Einfache Refactorings – Teil 5

Um automatisierte Tests ergänzen zu können, ist es manchmal sinnvoll, einen Konstruktorparameter einzuführen, über den die Abhängigkeit von außen reingereicht werden kann. Der Beitrag zeigt, wie dies am Beispiel von DateTime.Now mit einer simplen Lambda Expression möglich ist.

Desweiteren befasst sich der Beitrag mit Abhängigkeiten. Reduzieren Sie Abhängigkeiten durch das Extrahieren eines Interface. Auf diese Weise kann häufig die Testbarkeit hergestellt oder verbessert werden.

Einfache Refactorings – Teil 4

Häufig kann der Code mit einem simplen Extract Method Refactoring verständlicher gemacht werden. Die zusätzliche Methode ermöglicht es dem Leser, allein anhand des Methodennamens zu verstehen, was der Code macht. Eine gute Ergänzung ist häufig das Introduce Parameter Refactoring. Dadurch werden alle Eingaben einer Methode in der Parameterliste sichtbar, was ebenfalls die Verständlichkeit erhöht.

Einen anderen Fokus hat das Move to Another Type Refactoring. Durch dieses Refactoring werden Aspekte getrennt, dadurch dass ein Teil der Aspekte in eine andere Klasse verschoben wird. Automatisiert mit Toolunterstützung durchgeführt ist das Risiko gering, die Funktionalität zu zerstören.

Tweet Umfrage Twitter Legacy Code Herausforderungen

Legacy Code – Die Herausforderungen

Wo liegt die größte Herausforderung beim Umgang mit Legacy Code?

Über Twitter habe ich kürzlich gefragt, was die größte Herausforderung im Umgang mit Legacy Code ist.

Nun ist Twitter bekanntermaßen darauf ausgelegt, nur knappe Antworten zu geben. Da jedoch mehr als ein Dutzend Antworten eingetroffen sind, will ich hier berichten, wo Entwickler Herausforderungen beim Umgang mit Legacy Code sehen. Die „Umfrage“ ist weit entfernt davon, repräsentativ zu sein. Ich glaube, die Antworten weisen dennoch auf die typischen Herausforderungen hin. Sollte Ihre persönliche Herausforderung nicht genannt sein, freue ich mich über Ihren Kommentar!

Einfache Refactorings – Teil 3

Ein weiteres Anwendungsgebiet für das Extract Method Refactoring sind Bedingungen von Verzweigungen. Die Bedingung einer if-Anweisung erschließt sich beim Lesen manchmal erst, wenn wir den Inhalt der Verzweigung lesen. Durch ein Extract Method Refactoring kann die Bedingung, mit einem Namen versehen, ausgelagert werden. Neben der Verbesserung der Lesbarkeit kann dies auch eine bedeuten, eine DRY Verletzung zu beheben.

Weiters befasst sich der Beitrag damit, die Eingaben einer Methode explizit sichtbar zu machen. Dazu werden die benötigten Werte mittels Introduce Parameter Refactoring in die Parameterleiste gezogen.