Refactoring

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, Projektleiter

Empfohlene Dauer

2 Tage, insgesamt 12 Zeitstunden

Inhalte

  • 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

Voraussetzungen

Gute Kenntnisse in Java. Wissen um Entwurfsmuster ist von Vorteil.

Seminarunterlagen

Deutschsprachige Unterlagen (Kopien der Folien mit Inhaltsverzeichnis und Index), Zertifikat.

Software

Als Laufzeitumgebung wird standardmäßig Java SE 6 von Sun zusammen mit der Entwicklungsumgebung Eclipse 3.4 eingesetzt (Paket ›Eclipse IDE for Java EE Developers‹). Auf Wunsch auch NetBeans 6 oder andere Entwicklungsumgebungen.

Schlagwörter

[Addthis] [Google Bookmarks] [Yahoo! Bookmarks] [Delicius] [Mister Wong]

[Nach oben]