Refactoring von Legacy Code

  • View
    50

  • Download
    0

Embed Size (px)

DESCRIPTION

Refactoring von Legacy Code. Michael Kokonowskyj Thomas Schissler artiso AG. Ziele ?. Was soll durch Refactoring verbessert werden. Probleme in Legacy Code. Risiko durch Vernderung. Aufwand fr neue Features. Nutzung neuer Technologien & Methoden. Ziele moderner Architektur. Wartbar. - PowerPoint PPT Presentation

Transcript

PowerPoint Presentation

Refactoring von Legacy CodeMichael KokonowskyjThomas Schisslerartiso AG

Ziele ?Was soll durch Refactoring verbessert werdenThomas2Aufwand fr neue FeaturesProbleme in Legacy CodeRisiko durch VernderungNutzung neuer Technologien & Methoden

Thomas3Ziele moderner ArchitekturWartbarErweiterbar

Testbar

Thomas4Wie ?Anstze zur Verbesserung des CodesThomas5Hufige Lsung - Greenfield

Thomas6Refactoring Renovierung des Codes

Thomas7ArchitekturAnti-Patterns und wie es sein sollteKoko8Anti-PatternsRedundanzenUI-Componenten (z.B. Message-Boxen) im Code verwendenZugriffe auf Ressourcen (z.B. Files) nicht isolierbarZu viel Funktionalitt in einer MethodeStarke Bindung zwischen Klassen

Koko

9Trennung -Daten-Orchestrierung -LogikOberstes Ziel: EntkopplungSackgassen-methodenKomponenten-orientierung IoCInterfacesMVVM / MVCSingle ResponsibilityPOCOs

Koko / Thomas10Single ResponsibilityMethoden sollten nur ein Funktionalitt implementierenEs sollte genau einen Grund geben, eine Methode zu ndernTests knnen diese atomare Logik gut abprfen

Thomas11Abhngigkeiten zu RessourcenProblem: Wie kontrollieren wir die Abhngigkeiten von MethodenWarum ist das berhaupt problematisch?

InfrastrukturabhngigkeitenDestruktive TestsHoher InitialisierungsaufwandSimulation von Testfllen oft schwierig

Recognize1.) Aus File laden2.) Split3.) RecognizeFileUnit-TestThomas12Komponentenorientierte ArchitekturA

B

Data ContractOperation ContractThomas13ContractsData Contract

Operation Contract

Thomas14ImplementierungKomponente

Thomas15Klassische StrukturSplitLineDBReadDataRecognizeIntegrations-TestSplitDigitRecognize DigitUnit-TestIntegrations-TestIntegrations-TestIntegrations-TestThomas16Entkoppelte Struktur durch OrchestrierungSplitLineDBUnit-TestReadDataRecognizeIntegrations-TestUnit-TestSplitDigitRecognize DigitUnit-TestIntegrations-TestThomas17

Inversion of Control (IoC)Constructor InjectionThomas18StrategienRefactoring in der PraxisKoko19Refactoring Best PracticesKleine SchritteHufig lauffhige Stnde anstrebenMit einfachen und schnellen Ergebnissen beginnen (Pfadfinder-Regel)Aus kleinen Bereichen lernen statt alles auf ein Mal umstellenTestautomatisierung sofort mit umsetzenberprfung der Refaktoring-ZieleSicherheitPatterns extrahierenFr neue Funktionen lernen und im gesamten Team kommunizierenEinheitliche StrukturenThomas20VisualisierungKandidaten zu identifizierenKomplexitt abzuschtzenFortschritt transparent machenNotwendige Anpassungen erkennen

Code Maps / Dependency Graph / Layer Diagramm / Code MetricsKoko21Demo

Koko22Tipps & TricksSo funktionierts mit dem RefactoringDie Mikado-MethodeRefactoring-Ziel definierenRefactoring implementierenFehler?Fehler dokumentierennderungen rckgngig machenNchste Anpassung identifizierenAnpassungen bernehmenZiel erreicht?FertigStartNeinJaJaNeinThomas24Die Mikado-MethodeGrid ersetzenExportSpeichern-MethodeNeu berechnenValidierungThomas25FazitWas sollten sie mitnehmen?ZusammenfassungUnit-Testing ist essentiellRefactoring muss gewollt werden, von allen BeteiligtenRefactoring ist eine kontinuierliche AufgabeRefactoring ist eine Investition, lohnt sich aberDem Greenfield-Impuls wiederstehen, Refactoring heute starten!

Beide27Noch Fragen?KontaktVielen Dank fr ihre Aufmerksam-keitThomas Schisslerartiso solutions GmbHOberer Wiesenweg 25D - 89134 Blaustein

+49 7304 / 803-180 TSchissler@artiso.comhttp://www.artiso.comwww.artiso.com/problog