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.

Einfache Refactorings – Teil 2

Nicht selten ist die Parameterliste einer Method über die Jahre etwas zu lang geworden. Manchmal stehen die Parameter in einem sinnvollen Zusammenhang zueinander, so dass man sie zu einer Klasse zusammenfassen kann. Das ist nicht immer der Fall, vor allem, wenn eine Methode für mehr als einen Aspekt zuständig ist. In solchen Fällen werden häufig einzelne Parameter oder Gruppen von Parametern für die unterschiedlichen Aspekte der Methode benötigt. In dem Fall kann es helfen, zunächst die Aspekte zu trennen.

Der Beitrag befasst sich mit dem Extract Class from Parameters Refactoring, mit dem die Parameter einer Methode zu einer neuen Klasse zusammengefasst werden. Sollte dies schwer fallen, weil in der Methode Aspekte vermischt sind, hilft oft ein Extract Method Refactoring dabei, Aspekte aus der Methode in weitere Methoden auszulagern.

Einfache Refactorings – Teil 1

In dieser Reihe von Blogbeiträgen stelle ich Ihnen sogenannte Einfache Refactorings vor. Im Gegensatz zu Komplexen Refactorings sind diese vollständig toolgestützt durchführbar. Das bedeutet, dass Sie die Veränderungen am Quellcode automatisiert mithilfe einer IDE, z.B. Microsoft Visual Studio oder JetBrains Rider, ausführen. Vielleicht setzen Sie auch ein zusätzliches Refactoring Tool ein wie JetBrains ReSharper. Durch Einsatz eines solchen Werkzeugs bleibt das Verhalten der Anwendung beim Refactoring erhalten. Solange Sie die Refactorings konsequent ausschließlich mit solchen Werkzeugen ausführen und nicht per Hand eingreifen, ist die Wahrscheinlichkeit sehr hoch, dass sich der Code hinterher genauso verhält wie vor dem Refactoring.

Der erste Beitrag der Serie beschreibt ferner, wie Sie mit dem Rename Refactoring sowie dem Introduce Variable Refactoring die Lesbarkeit Ihres Codes erhöhen.

Schnellstart Unit Tests

Stellen Sie die Korrektheit Ihrer Implementation automatisiert sicher durch Unit Tests. Starten Sie noch heute! In diesem Cheatsheet finden Sie die wichtigsten Details zu NUnit, MSTest und CppUnit, die Sie für einen schnellen Start benötigen. Auch zum Nachschlagen von selten genutzten Features hilfreich.

CheatSheet Unit Tests mit NUnit

Nachschlagen aller relevanter Details zu Unit Tests:

  • Grundlagen: Wie ist ein Test aufgebaut?
  • Wie werden Tests ausgeführt?
  • Assert: viele Beispiele zur Syntax.
  • Datengetriebene Tests
  • Wie teste ich interne Details?
  • Wie können Testdateien verwendet werden?
  • Welche Referenzen werden benötigt?

Gewinnen Sie die Kontrolle über Ihren Code zurück!

Schnellstart Mikado Methode

Ihre Codebasis ist Ihnen außer Kontrolle geraten? Undurchsichtige Abhängigkeiten erschweren Ihre Änderungen? Automatisierte Tests sind nicht vorhanden? Komplexe Refactorings werden nie fertig?

Komplexe Refactorings umsetzen mit der Mikado Methode
  • Gewinnen Sie die Kontrolle über Ihre Legacy Codebasis zurück
  • Lernen Sie die Mikado Methode.
  • Zerlegen Sie komplexe Refactorings Schritt für Schritt.
  • Enthält den Ablauf und Tipps zu den einzelnen Schritten der Mikado Methode.