Schulung Refactoring von Java-Programmcode

Beschreibung/Inhalt

Was tun, wenn man feststellt, dass der Aufwand, neue Funktionalität in die Anwendung einzubauen immer höher wird? Was tun, wenn das Risiko durch Änderungen neue Fehler einzubauen immer größer wird? Was tun, wenn mit der bestehenden Code-Basis neue Technologie-Konzepte nicht verwendet werden können? Der Standardansatz lautet oft: alles neu machen, dann wird alles gut. In diesem Training erlernen Sie eine Alternative: Refactoring. Zunächst wird geschildert, warum Refactoring meist die bessere Lösung ist. Anschließend werden verschiedene Anti-Patterns in Legacy Code und die daraus resultierenden Probleme geschildert. Im nächsten Schritt wird dann aufgezeigt, wie moderne Architekturprinzipien klassische Probleme vermeiden helfen und es wird ein Gesamtkonzept für eine solche Architektur entwickelt. Anschließend wird aufgezeigt, wie durch entsprechende Refactoring-Techniken und -tools bestehender Code umgebaut wird und welche Vorgehensweisen sich beim Refactoring bewährt haben. Die Teilnehmer üben alle diese Schritte an einem eingängigen Übungsbeispiel und haben am dritten (optionalen) Tag die Möglichkeit die Vorgehensweisen am eigenen Code auszuprobieren.

Dieses Schulungsmodul kann mit allen aktuellen Java-Versionen (z.B. 21, 20, 19, 18) entsprechend Ihren Wünschen durchgeführt werden.
Dieses Schulungsmodul kann mit allen aktuellen Java Enterprise Edition-Versionen (z.B. 9, 8, 7, 6) entsprechend Ihren Wünschen durchgeführt werden.

1. Einleitung und Motivation

  • Was heißt Refaktorieren?
  • Woran erkennt man, dass Refaktorierung notwendig ist ("übel riechender Code", Code Smells)?
  • Warum sind automatisierte Tests erforderlich?


  • 2. Pattern für die Refaktorierungen
  • Auswahl von Patterns aus dem Pattern-Katalog von Martin Fowler


  • 3. Refactoring-Tools
  • Nutzung von Werkzeugen wie Eclipse


  • 4. Praktische Übungsbeispiele (am Beispiel einer schlecht programmierten Anwendung, schrittweises Refactoring unter Einsatz von Unit Tests, im Schwierigkeitsgrad zunehmend)
    Insbesondere werden hier folgende Themen angesprochen
  • Vermeidung von Codeduplikation
  • Verwendung "richtiger" Namen
  • Richtiger Umgang mit Variablen und Parametern (final...)
  • Vermeidung zu tiefer Schachtelungen
  • Vermeidung zu komplexer Bedingungsausdrücken
  • Verwendung von Zusicherungen (Preconditions, Invarianten, Postconditions)
  • Vermeidung von Vermischung unterschiedlicher Abstraktionsebenen
  • Vermeidung von "switches" (Alternative: Map oder dynamisches Binden)
  • Vermeidung von instanceof und Downcast
  • Ersetzen von Methoden durch Funktionsobjekte
  • konsistente Fehlerbehandlung
  • Richtiger Umgang mit Assoziationen
  • Interfaces vs. Klassen
  • Verwendung von Dependency-Injection
  • Delegation vs. Vererbung (Strategie...)
  • Richtiger Umgang mit Polymorphie und dynamischen Binden
  • Objektkomposition via Interfaces vs. "klassischer" Vererbung
  • Benutzung von inneren Klassen und Factories

  • Dauer
    Auf Wunsch. Gerne geben wir Ihnen eine Empfehlung zur notwendigen Schulungsdauer, wenn Sie uns in der Anfrage Ihre Vorkenntnisse und Ziele nennen.
    Ort
    Online oder in Deutschland, Österreich und der Schweiz an Ihrem Firmensitz
    Schulungsdidaktik
    Nach Ihrer Wahl: Klassische Schulung mit PC-Übungen, reine Präsentation ohne PC-Übungen oder interaktiver Workshop mit Beratungsanteil