Grüne Inseln im Schlamm – mit Legacy-Code arbeiten

Legacy-Code ist eine der größten Herausforderungen für Entwicklerinnen und Entwickler überhaupt. Er kostet Nerven und fordert oft all unsere Kräfte, um auch nur ein kleines Feature in Produktion zu bringen. Motiviert von Michael Feathers' Tweet "Key lesson is, you can always (read: most of the time) do greenfield in a legacy code base." möchte ich anhand der Kata "Gilded Rose" einige Refactorings und Legacy-Code-Techniken live vorführen. Diese kann die IDE nicht automatisch für uns ablaufen lassen, aber man kann sie dafür auch tief im Schlamm des Brownfields einsetzen. So pflanzt man testgetriebene, grüne Inseln, die sich Schritt für Schritt vergrößern und so das ganze Projekt verbessern.

Vorkenntnisse

– Grundlagen Refactoring
– eine objektorientierte Programmiersprache

Lernziele

– Vertiefende Refactoring-Techniken
– Refactoring, obwohl die IDE nicht automatisch helfen kann
– Legacy-Code insgesamt weniger furchteinflößend machen

 

 

Agenda

09:00 Theorie: Das Problem mit Legacy Code
- Tests als Sicherheitsnetz
- Seams
- Preparatory Refactoring
- Incremental Switchover statt Big Bang

09:30 Characterization Tests
- Technik, Übung, Review
- kurze Pause

11:00 Wrap Class
- Technik, Übung, Review

12:00 Mittagspause

13:15 Sprouting
- Technik, Übung, Review
- kurze Pause

14:15 Excise Method
- Technik, Übung, Review
- kurze Pause

15:15 Incremental Switchover
Szenario
- unser Ansatz und die verwendeten Techniken
- kurze Pause

16:00 Abschluss

 

Technische Anforderungen:

Die Beispiele werden in Java sein, sind aber problemlos auf andere objektorientierte Sprachen übertragbar. Folgende Tools sollten installiert sein:
- Java 8
- Maven 3
- IntelliJ
- git
- Skype für den Notfall

Als Installationstool wird sdkman empfohlen: https://sdkman.io/install
- sdk install maven
- sdk install java 8.0.265-open

Folgendes Maven Projekt mit JUnit als Dependency sollte man bauen können und in IntelliJ Unit Tests ausführen können: https://github.com/junit-team/junit5-samples

Im Unterordner 'junit5-jupiter-starter-maven': "mvn clean install" sollte der Build ohne Fehler durchlaufen

Speaker

 

Georg Berky
Georg Berky programmiert gerne und leidenschaftlich, meistens in JVM-Sprachen wie Java, Groovy oder Clojure. Zum Handwerk gehören für ihn auch Themen wie die Pflege von Legacy-Code, Automatisierung von Builds und Deployments oder Agilität im Team. Seit einigen Jahren ist er Co-Organisator der Software-Craftsmanship-Communitys im Ruhrgebiet und in Düsseldorf.

Sponsoren

Gold
Silber
Bronze
Mathema
esolutions
Nürnberger Versicherungen
Angular Architects

Herbstcampus-Newsletter

Sie möchten über den Herbstcampus
auf dem Laufenden gehalten werden?

 

Anmelden