Über diese Schulung
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. 23, 22, 21, 20) entsprechend Ihren Wünschen durchgeführt werden.
Dieses Schulungsmodul kann mit allen aktuellen Java Enterprise Edition-Versionen (z.B. 10, 9, 8, 7) entsprechend Ihren Wünschen durchgeführt werden.
Individuell anpassbarer Programmvorschlag/Lehrplan für das Schulungsmodul Refactoring von Java-Programmcode
Dies ist nur ein Vorschlag für eine Agenda. Wie bei allen unseren Maßnahmen können Sie Themen streichen, ergänzen und priorisieren. Zudem können Sie diese Inhalte mit anderen Themenmodulen kombinieren. Egal ob Sie eine Schulung und/oder Beratung wünschen: Die Maßnahme wird auf Ihre Wünsche und Bedürfnisse genau maßgeschneidert!
- Einleitung und Motivation
- Was heißt Refaktorieren?
- Woran erkennt man, dass Refaktorierung notwendig ist ("übel riechender Code", Code Smells)?
- Warum sind automatisierte Tests erforderlich?
- Pattern für die Refaktorierungen
- Auswahl von Patterns aus dem Pattern-Katalog von Martin Fowler
- Refactoring-Tools
- Nutzung von Werkzeugen wie Eclipse
- 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