Durch Refactoring von Legacy Code zu Clean Code

Ich unterstütze Sie darin, die Kontrolle über Ihren Legacy Code zurückzugewinnen!

Wenn Sie

  • keine automatisierten Tests für Ihren Code haben,
  • Ihren Code kaum noch ändern, weil Sie ihn nicht mehr verstehen,
  • mit vielen Bugs in Ihrem Code zu kämpfen haben,
  • zu viel Zeit brauchen, um neue Features zu ergänzen,
  • Refactoring der Codebasis viel zu lange dauert,

dann ist Ihnen Ihre Codebasis wohl ausser Kontrolle geraten. Lernen Sie Schritt für Schritt, wie Sie die Kontrolle mit System zurückgewinnen. Ich stehe Ihnen als Berater zur Seite und befähige Sie und Ihr Team dazu, Ihre technischen Schulden wieder unter Kontrolle zu bringen.

Kundenstimmen

„Stefan hat unser Team über ein Jahr in 10 Sessions als Coach begleitet. Mit Flow Design gab er uns eine Methode an die Hand, saubereren und wartbareren Code zu entwickeln und die Entwicklung eines Features im Team besser zu parallelisieren. Durch die Kombination von theoretischen Grundlagen, praktischen Übungen und Diskussionen anhand unserer realen Projekte, half er uns die Anforderungen an wartbaren Code besser zu verstehen und in der Praxis anzuwenden. Damit können wir in der COMPAREX AG noch besser auf Kundenwünsche eingehen und Software effizient in hoher Qualität entwickeln.“
Tino Schnerwitzki, Teamleiter Application Development, COMPAREX AG
„Früher hatten wir Schmerzen durch Legacy Code. Als Heilmittel fanden wir Clean Code und Stefan, der uns auf dem Weg zu erfolgreichen Clean Codern führte. Nun macht das Entwickeln einer modernen Microservice Architektur in einem DevOps Team richtig Spaß.“
Markus Rothhöft, Leiter Softwareentwicklung, M.S.E. GmbH
„Die Trainings bei Stefan Lieser sind fachlich fundiert und menschlich überaus angenehm. Er gibt seine tiefe Erfahrung kollegial und pointiert weiter, was das Lernen mit ihm ebenso effektiv wie inspirierend macht. Aus diesen Gründen wurden bereits über ein Dutzend unserer Mitarbeiter von Stefan geschult.“
Michael Speer, Vorstand, generic.de software technologies AG
„Durch die Workshops mit Stefan haben wir eine neue Betrachtungsweise auf unseren Legacy Code gewonnen. Durch geeignete Methoden haben wir die Produktion von neuem Code in den Bereichen Entwurf, Programmierung und automatisiertes Testen optimieren können. Beim Legacy Code führt kontrolliertes und dosiertes Refactoring und das Stellen des Codes unter Test zu einer besseren Softwarequalität sowie schnelleren und damit kostengünstigeren Erweiterungsmöglichkeiten.“
Alexander Schmidt, Leiter der Softwareentwicklung, Compra GmbH
„Die iterative Durchführung des Workshops mit Stefan hat uns innerhalb eines halben Jahres bei der Befähigung zur Verbesserung der Codequalität stark vorangebracht. Schlüsselfaktoren waren für uns dabei: das iterative Vorgehen, die praktischen Übungen und die gemeinsamen Analysen der Einzellösungen, sowie die kleinen Arbeitsgruppen.“
Rainer Trunk, Prozessmanager, ODS Marketing GmbH
„In den CCD-Workshops fordert Stefan uns heraus, Altbekanntes zu hinterfragen und neue Wege zu gehen. Bei den Workshops nimmt Stefan kein Blatt vor den Mund und holt uns immer wieder aus unserer Komfortzone heraus. Das regelmäßige Üben, das Stefan uns ans Herz gelegt hat, ist für uns zu einem wichtigen Bestandteil unserer Arbeit geworden.“
Klaus Stein, Manager verantwortlich für Aus- und Weiterbildung, Mitutoyo CTL Germany GmbH
„Durch das Clean-Code-Training mit Stefan erhielten wir viele Denkanstöße, unser bisheriges Vorgehen zu überdenken und aus einem anderen Blickwinkel zu sehen, was maßgebend dazu beigetragen hat unsere Code-Qualität sowie unseren Entwicklungsprozess zu verbessern. Die Erfolgsfaktoren sind sicherlich das über einen längeren Zeitraum aufgebaute iterative Trainingsmodell, sowie Stefans kompetente, kurzweilige, interessante, zielorientierte und situative Trainingsdurchführung.“
Gunter Ziesel, Teamleiter eCommerce Entwicklung, Würth IT GmbH

Refactoring

Refactoring von Legacy Code ist notwendig, um die Kontrolle zurückzugewinnen. Die Schritte zurück zur Wandelbarkeit des Codes sind im Prinzip einfach. Doch viele Teams haben Angst, den bestehenden Legacy Code zu verändern, weil sie die Konsequenzen ihrer Änderungen nicht überblicken können. Sie haben es wahrscheinlich erlebt, dass ihr Produkt instabil wurde, haben so vielleicht bereits ihre Kunden verärgert. Ferner stellt sich die Frage, wo sie anfangen sollen, wie lange das wohl dauern wird, was das alles kosten soll. Und ganz praktisch sind die eigentlich einfachen Schritte dann im realen Projekt doch nicht so leicht, wie man es sich gedacht hatte.

Genau hier setze ich an. Es geht weniger darum, einfache Refactorings zu erklären oder den Einstieg in das automatisierte Testen zu schaffen. Sondern es geht darum, wie all diese Techniken konkret Schritt für Schritt auf Legacy Code angewendet werden, mit dem Ziel, wieder beweglich zu werden.

Legacy Code

Mit dem Begriff Legacy Code bezeichne ich Quellcode, der nicht „nach den Regeln der Kunst“ erstellt wurde. Typischerweise fehlen automatisierte Tests. Ferner wird gegen wichtige Prinzipien verstoßen, wie etwa DRY – Don’t Repeat Yourself oder SRP – Single Responsibility Principle. Wir orientieren uns dabei an der Clean Code Developer Initiative, in der mein Kollege Ralf Westphal und ich wichtige Prinzipien und Praktiken zusammengetragen haben.

Mit den folgenden Beiträgen können Sie loslegen

Artikelserie zu automatisierten Tests

Die kniffligen Fälle beim Testen

Artikelserie zu einfachen Refactorings

Teil 1
Einfache vs. komplexe Refactorings
Ziel von Refactorings
Die Lesbarkeit verbessern – Rename Refactoring
Die Lesbarkeit verbessern – Introduce Variable

Teil 2
Das Abstraktionsniveau anheben – Extract Class from Parameters
Aspekte trennen – Extract Method

Teil 3
if-Anweisungen vereinfachen – Extract Method
Eingaben sichtbar machen – Introduce Parameter

Teil 4
Abhängigkeiten reduzieren – Extract Method und Introduce Parameter
Aspekte trennen – Move To Another Type

Teil 5
Die Testbarkeit verbessern – Internal Test Constructor
Abhängigkeiten reduzieren – Extract Interface

Artikelserie zu komplexen Refactorings

Komplexe Refactorings an Legacy Code – Teil 1

Komplexe Refactorings an Legacy Code – Teil 2

[Video] Komplexe Refactorings mit der Mikado Methode angehen

[Video] Die Mikado Methode – Ablauf