Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Refactoring von Legacy Code

Ähnliche Präsentationen


Präsentation zum Thema: "Refactoring von Legacy Code"—  Präsentation transkript:

1 Refactoring von Legacy Code
Michael Kokonowskyj Thomas Schissler artiso AG

2 Ziele ? Was soll durch Refactoring verbessert werden Thomas

3 Probleme in Legacy Code
Risiko durch Veränderung Aufwand für neue Features Nutzung neuer Technologien & Methoden Thomas

4 Ziele moderner Architektur
Wartbar Testbar Erweiterbar Thomas

5 Wie ? Ansätze zur Verbesserung des Codes Thomas

6 Häufige Lösung - Greenfield
Thomas

7 Refactoring – Renovierung des Codes
Thomas

8 Architektur Anti-Patterns und wie es sein sollte Koko

9 Anti-Patterns Redundanzen
UI-Componenten (z.B. Message-Boxen) im Code verwenden Zugriffe auf Ressourcen (z.B. Files) nicht isolierbar Zu viel Funktionalität in einer Methode Starke Bindung zwischen Klassen Koko

10 Oberstes Ziel: Entkopplung
Single Responsibility MVVM / MVC POCOs Sackgassen-methoden Trennung -Daten -Orchestrierung -Logik Komponenten-orientierung IoC Interfaces Koko / Thomas

11 Single Responsibility
Methoden sollten nur ein Funktionalität implementieren Es sollte genau einen Grund geben, eine Methode zu ändern Tests können diese atomare Logik gut abprüfen Thomas

12 Abhängigkeiten zu Ressourcen
Problem: Wie kontrollieren wir die Abhängigkeiten von Methoden Warum ist das überhaupt problematisch? Infrastrukturabhängigkeiten Destruktive Tests Hoher Initialisierungsaufwand Simulation von Testfällen oft schwierig Recognize 1.) Aus File laden 2.) Split 3.) Recognize Unit-Test File Thomas

13 Komponentenorientierte Architektur
B Thomas Data Contract Operation Contract

14 Contracts Data Contract Operation Contract Thomas

15 Implementierung Komponente Thomas

16 Klassische Struktur Integrations-Test Recognize Integrations-Test
SplitLine Integrations-Test ReadData Integrations-Test DB Thomas SplitDigit Integrations-Test Recognize Digit Unit-Test

17 Entkoppelte Struktur durch Orchestrierung
Integrations-Test Recognize ReadData SplitLine SplitDigit Recognize Digit Thomas Integrations-Test Unit-Test Unit-Test Unit-Test DB

18 Inversion of Control (IoC)
Constructor Injection Thomas

19 Strategien Refactoring in der Praxis Koko

20 Refactoring Best Practices
Kleine Schritte Häufig lauffähige Stände anstreben Mit einfachen und schnellen Ergebnissen beginnen (Pfadfinder-Regel) Aus kleinen Bereichen lernen statt alles auf ein Mal umstellen Testautomatisierung sofort mit umsetzen Überprüfung der Refaktoring-Ziele Sicherheit Patterns extrahieren Für neue Funktionen lernen und im gesamten Team kommunizieren Einheitliche Strukturen Thomas

21 Visualisierung Kandidaten zu identifizieren Komplexität abzuschätzen
Fortschritt transparent machen Notwendige Anpassungen erkennen Code Maps / Dependency Graph / Layer Diagramm / Code Metrics Koko

22 Demo Koko

23 Tipps & Tricks So funktionierts mit dem Refactoring

24 Die Mikado-Methode Start Refactoring-Ziel definieren
Refactoring implementieren Nächste Anpassung identifizieren Fehler? Anpassungen übernehmen Nein Ja Ziel erreicht? Thomas Nein Fehler dokumentieren Ja Änderungen rückgängig machen Fertig

25      Die Mikado-Methode Grid ersetzen Speichern-Methode
Export Neu berechnen Speichern-Methode Validierung Thomas

26 Fazit Was sollten sie mitnehmen?

27 Zusammenfassung Unit-Testing ist essentiell
Refactoring muss gewollt werden, von allen Beteiligten Refactoring ist eine kontinuierliche Aufgabe Refactoring ist eine Investition, lohnt sich aber Dem Greenfield-Impuls wiederstehen, Refactoring heute starten! Beide

28 Noch Fragen?

29 Kontakt Vielen Dank für ihre Aufmerksam-keit Thomas Schissler
artiso solutions GmbH Oberer Wiesenweg 25 D Blaustein /


Herunterladen ppt "Refactoring von Legacy Code"

Ähnliche Präsentationen


Google-Anzeigen