Übung 1.4: Problem in der Codestruktur beheben
Für diese Übung wird vorausgesetzt, dass Sie bereits Übung 1.1: Erforderliche Ressourcen importieren ausgeführt haben. Bei der vorliegenden Übung lesen Sie zunächst ein Benutzerszenario. Anschließend übernehmen Sie die Rolle des im Szenario beschriebenen Softwarearchitekten und verwenden das in Übung 1.1 importierte Projekt, um die Übung auszuführen.
Benutzerszenario
Zur speziellen Überprüfung von Code auf zyklische Abhängigkeiten führt der Architekt eine Structural Analysis-Codeprüfung aus, die nach solchen Abhängigkeiten sucht. Bei der Codeprüfung werden tatsächlich einige zyklische Abhängigkeiten gefunden, und der Architekt stellt fest, dass für einige davon Quick-Fixes zur Verfügung stehen. Ein Quick-Fix ist eine bereitgestellte, automatisierte Möglichkeit zur Korrektur allgemeiner Fehler. Zur Umstrukturierung (Refactoring) des Codes wendet der Architekt den betreffenden Quick-Fix auf eine zyklische Abhängigkeit an.
In der letzten Übung führt der Architekt eine Codeprüfung aus und korrigiert einen der gefundenen Fehler.
Übung
Im Verlauf dieser Übung führen Sie folgende Aufgaben aus:
- Ausführen einer Codeprüfung zum Suchen zyklischer Abhängigkeiten
- Erkennen, wenn zur Aufhebung einer zyklischen Abhängigkeit ein Quick-Fix zur Verfügung steht
- Anwenden eines Quick-Fixes zur Aufhebung einer zyklischen Abhängigkeit
- Anzeigen einer Liste der erforderlichen Änderungen
- Anzeigen des bestehenden und umstrukturierten Codes für jede Änderung
- Abrufen einer Bestätigung über die Anwendung des Quick-Fixes
Codeprüfung für die Überprüfung auf zyklische Abhängigkeiten auswählen
So wählen Sie eine Codeprüfung aus, die den Code auf zyklische Abhängigkeiten überprüft:
- Klicken Sie in der Funktionsleiste in der Ansicht "Code Review" auf das Symbol für Regeln verwalten
.

- Klicken Sie in der Liste für die Auswahl der Codeprüfung auf Structural Analysis Code Review.
- Erweitern Sie den Ordner Structural Analysis und löschen Sie alle Einträge außer dem Unterordner Cyclic Dependency.
- Erweitern Sie den Unterordner Cyclic Dependency, um die Regeln anzuzeigen, die bei der Codeprüfung angewendet werden (siehe folgenden Screenshot). Klicken Sie auf OK.

Codebasis für die Prüfung auswählen
So wählen Sie den Arbeitsbereich als zu überprüfende Codebasis aus:
- Klicken Sie in der Funktionsleiste in der Ansicht "Code Review" auf das Symbol für Prüfung
> Review Workspace.
Codeprüfung ausführen
Nach Auswahl der Codebasis für die Prüfung wird die Codeprüfung ausgeführt. Sie können den Status der Prüfung anhand des Fortschrittsanzeigers in der unteren rechten Ecke der Ansicht verfolgen.
Liste der gefundenen zyklischen Abhängigkeiten anzeigen
Bei der Codeprüfung wurden vier zyklische Abhängigkeiten gefunden (siehe nächsten Screenshot). Bei einer zyklischen Abhängigkeit handelt es sich um ein unerwünschtes Anti-Pattern, das vermieden werden sollte. Bei einer zyklischen Abhängigkeit ist eine Gruppe von Objekten so miteinander verbunden, dass Änderungen an einem Objekt Auswirkungen auf alle übrigen Objekte haben können.

- Erweitern Sie den Ordner Structural Analysis: Cyclic Dependency und sehen Sie sich die darin befindlichen Fehler an (siehe nächsten Screenshot):

- Jeder zyklischen Abhängigkeit wurde die höchste Wertigkeit "Problem" (
) zugeordnet.
- Für zwei zyklische Abhängigkeiten steht ein Quick-Fix zur Verfügung (
), um die Abhängigkeiten aufzuheben.
- Klicken Sie mit der rechten Maustaste auf den dritten aufgelisteten Fehler. Die Menüauswahl im Quick-Fix-Popup-Menü ist abhängig von der Lösung. Für die von Ihnen ausgewählte zyklische Abhängigkeit besteht die Korrektur darin, das Statistikfeld von der Basisklasse in eine andere Klasse zu verschieben und dadurch die zyklische Abhängigkeit aufzuheben.
- Klicken Sie auf Quick-Fix: Move static field from base class.

Quick-Fix anwenden
Für die von Ihnen ausgewählte zyklische Abhängigkeit besteht die Korrektur darin, das Statistikfeld von der Basisklasse in eine andere Klasse zu verschieben. Die Verschiebung kann dabei in eine bestehende oder eine neue Klasse erfolgen.
So verschieben Sie das Feld in eine neue Klasse:
- Lesen Sie im folgenden Screenshot die schreibgeschützten Informationen zur zyklischen Abhängigkeit, auch als Tangle bezeichnet, die Sie aufheben möchten:
- Klassen, die Teil des Tangles sind
- Abhängigkeiten zwischen Klassen im Tangle
- Klicken Sie auf Generate a new Java class und geben Sie Folgendes ein:
- src/ für den Namen des Quellenordners
- com.ibm.r2a.rules.rsa.examples für den Paketnamen
- Defaults für den Klassennamen

- Klicken Sie auf Preview, um den Code anzuzeigen, der durch die Korrektur geändert wird.
- Erweitern Sie die Liste Changes to be performed (siehe folgenden Screenshot), um genau sehen zu können, welche Änderungen durch den Quick-Fix am Code vorgenommen werden, wenn das Statistikfeld in die neue Klasse verschoben wird.

- Klicken Sie auf die vierte Änderung in der Liste, die mit "Font.java" beginnt, um den ursprünglichen und den umstrukturierten Code nebeneinanderanzuzeigen. Der ursprüngliche Code wird links und der umstrukturierte Code, der durch den Quick-Fix erstellt wird, rechts angezeigt.

- Klicken Sie auf OK, um den Quick-Fix auf alle ausgewählten Änderungen in der Liste anzuwenden.
- Nach Anwendung des Quick-Fixes erscheint ein Haken als Bestätigung für die Behebung des Problems.

Sie haben Übung 1.4 "Problem in der Codestruktur beheben" abgeschlossen.
Vorteile von Quick-Fixes nutzen
Quick-Fixes werden für eine Reihe allgemeiner Fehler bereitgestellt, die bei Codeprüfungen gefunden werden. Durch die Anwendung von Quick-Fixes können Sie eine zyklische Abhängigkeit automatisch aufheben. Dabei können Sie folgende Aktionen durchführen:
- Zyklische Abhängigkeiten suchen und bewerten
- Die Abhängigkeit mit Hilfe eines automatisierten Quick-Fixes schnell aufheben
- Eine genaue Liste der Änderungen anzeigen, die durch den Quick-Fix am Code vorgenommen würden
- Die zyklische Abhängigkeit bei jedem Auftreten konsistent aufheben
Nachbearbeitung von Übung 1.4
Sie haben Übung 1.4 "Problem in der Codestruktur beheben" abgeschlossen. Im Verlauf dieser Übung führten Sie folgende Aufgaben aus:
- Ausführen einer Codeprüfung zum Suchen zyklischer Abhängigkeiten
- Erkennen, wenn zur Aufhebung einer zyklischen Abhängigkeit ein Quick-Fix zur Verfügung steht
- Anwenden eines Quick-Fixes zur Aufhebung einer zyklischen Abhängigkeit
- Anzeigen einer Liste der erforderlichen Änderungen
- Anzeigen des bestehenden und umstrukturierten Codes für jede Änderung
- Abrufen einer Bestätigung über die Anwendung des Quick-Fixes
Zum Abschluss des Lernprogramms erhalten Sie in der Zusammenfassung nochmals eine Übersicht über die Lernziele.