Refactoring
Empfohlene Schulungsdauer: 2 Tage, insgesamt 16 Unterrichtsstunden à 45 Minuten
Kursziele
Viele Java-Programme büßen mit der Zeit an Lesbarkeit und Übersichtlichkeit ein. Das Refactoring Seminar zeigt, wie Systemarchitekten Schwächen im Design entdecken und historisch gewachsene Programme verbessern sowie leichter erweitern können. Um das Auffinden von betroffenen Programmstellen zu üben, wird im Seminar ein Beispiel Schritt für Schritt optimiert und dabei die von Martin Fowler dokumentierten Refactoring-Möglichkeiten angewendet. Software-Entwickler lernen auf diese Weise, für wiederkehrende Probleme die passenden Refactoring-Schritte auszuwählen und in einer Entwicklungsumgebung anzuwenden. Bewusst nehmen die Teilnehmer wahr, warum die Pflege des Systems neben der Neuentwicklung ein fester Bestandteil des Entwickleralltags sein muss.
Zielgruppe
Systemarchitekten, Software-Entwickler, ProjektleiterKursvoraussetzungen
Gute Kenntnisse in Java. Wissen um Entwurfsmuster ist von Vorteil.Seminarinhalte
Einführung
- Ursprung von Refactoring
- Übel riechender Code (code smell)
- Das Prinzip der kleinen Schritte
- Refactoring und Testing, JUnit
- Phasen in der agilen Software-Entwicklung
- Refactoring und Entwurfsmuster
- Wiederholung von wichtigen Entwurfsmusterns
- Risiken und die Frage nach dem Ende
- Code-Metriken
- Refactoring-Tools
Methoden zusammenstellen
- Methode extrahieren, Methode inline setzen
- Temporäre Variable entfernen, temporäre Variable durch Anfragemethode ersetzen
- Beschreibende Variable einführen
- Trenne temporäre Variable
- Entferne Zuweisung an Parametervariable
- Ersetze eine Methode durch ein Methoden-Objekt, ersetze Algorithmus
Eigenschaften zwischen Objekten verschieben
- Verschiebe Methode und Attribut
- Extrahiere Klasse oder Klasse inline setzen
- Den Delegate verstecken
- Entferne Klasse in der Mitte
- Führe fremde Methode ein
- Führe lokale Erweiterung ein
Daten organisieren
- Kapsele Attributzugriffe, Attribut, Collection
- Ersetze eigenes Attribut durch Objektverweis
- Ersetze Wert durch Referenz und umgekehrt
- Ersetze Feld durch ein Objekt
- Beobachtete Daten verdoppeln
- Unidirektionale Beziehung und bidirektionale Beziehung
- Magische Zahlen und symbolische Konstanten
- Datensatz durch Datenklasse ersetzen
- Typenschlüssel durch Klasse ersetzen
- Typspezifischen Code durch Unterklassen bzw. Zustand-/Strategiemuster ersetzen
- Unterklassen durch Attribute ersetzen
Bedingte Ausdrücke vereinfachen
- Zerlege Bedingung
- Wiederholte Anweisungen oder Ausdrücke zusammenführen
- Kontroll-Flags entfernen
- Geschachtelte Bedingungen durch Wächter ersetzen
- Fallunterscheidungen durch Polymorphie ersetzen
- Null-Objekt einführen
- Assertions einführen
Methodenaufrufe vereinfachen
- Methode umbenennen und neu parametrisieren
- Parameter hinzufügen und entfernen
- Parameter durch Methoden ersetzen
- Vorhandenes Objekt übergeben
- Parameter-Objekt einführen
- Setter entfernen
- Methode verstecken
- Fabrik-Methode
- Explizite Typanpassung kapseln
- Fehlercodes durch Ausnahmen ersetzen und Ausnahmen durch Tests vermeiden
Umgang mit Generalisierung
- Attribut, Methode oder Konstruktor hochziehen
- Methode, Attribute nach unten verlagern
- Extrahiere Unterklasse, Oberklasse und Schnittstelle
- Hierarchien abbauen
- Schablonenmethode
- Ersetze Vererbung durch Delegation und umgekehrt
Weitere Refactorings
- Dynamische und statische Erzeugung
- Paket extrahieren
- Synchronizer-Token einführen
- Klasse verschieben
- Gültigkeit der Variable beschränken
- Doppelte Verneinung entfernen
- Definition und Initialisierung einer Variablen verbinden
- Fallunterscheidungen und Visitor
- Iteration und Rekursion
- Ersetze statische Variable durch Parameter
- Bedingung umdrehen und Schleifen trennen
Kleiner Ausblick auf Refactorings in Enterprise Java
- Schichtenarchitekturen
- Kommunikation zwischen EJBs
- Connection-Pool
Schulungsunterlagen
Deutschsprachige Unterlagen (Kopien der Folien mit Inhaltsverzeichnis und Index), Zertifikat.
Eingesetze Seminar-Software
Als Laufzeitumgebung wird standardmäßig Java SE 6 von Sun zusammen mit der Entwicklungsumgebung Eclipse 3.5 eingesetzt (Paket ›Eclipse IDE for Java EE Developers‹). Auf Wunsch auch NetBeans 6 oder andere Entwicklungsumgebungen (IntelliJ IDEA, Oracle JDeveloper).
Schlagwörter
Weiterführende Seminare
- Design Patterns (Entwurfsmuster) in Java
- Effektiv Java programmieren
- Java EE Architektur und Design Patterns
![Zu einem Bookmark-Anbieter hinzufügen [Addthis]](../../images/bookmarks/addthis.png)
![Zu Google Bookmarks hinzufügen [Google Bookmarks]](../../images/bookmarks/google.png)
![Zu Yahoo! Bookmarks hinzufügen [Yahoo! Bookmarks]](../../images/bookmarks/yahoo.png)
![Zu Delicius hinzufügen [Delicius]](../../images/bookmarks/delicious.png)
![Zu Mister Wong hinzufügen [Mister Wong]](../../images/bookmarks/misterwong.png)