練習 1.4︰解決結構問題
本練習假設您已完成練習 1.1︰匯入必要的資源。在練習 1.4 中,首先您要閱讀一個使用者實務。然後,假設您扮演使用者實務中所描述的軟體架構設計師角色,並使用您在練習 1.1 中所匯入的專案來完成練習。
使用者實務
為了特別檢查程式碼是否有循環相依關係,架構設計師執行結構分析程式碼複查,尋找這類的相依關係。程式碼複查的確發現一些循環相依關係,架構設計師注意到其中一些具有快速修正。快速修正是提供的自動修正一般發現項目的方法。為了重構程式碼以去除循環,架構設計師針對其中一個循環相依關係套用快速修正。
在最後一個練習中,架構設計師執行程式碼複查並修正其中一個發現項目。
練習
在這個練習中,您會執行下列作業︰
- 執行程式碼複查來尋找循環相依關係。
- 辨識循環相依關係何時有提供的快速修正。
- 套用快速修正來解決循環相依關係︰
- 查看要進行的變更清單。
- 檢視每項變更的現有和重構的程式碼。
- 確認已套用快速修正。
選取要檢查循環相依關係的程式碼複查
如果要選取檢查循環相依關係的程式碼複查︰
- 在「程式碼複查」視圖中的工具列上按一下管理規則圖示
。

- 在選取程式碼複查清單中,按一下結構分析程式碼複查。
- 展開結構分析資料夾,取消選取除了循環相依關係資料夾之外的所有項目。
- 展開循環相依關係子資料夾,查看將在程式碼複查中套用的規則,如下列畫面所示。按一下確定。

選取要複查的程式碼庫
如果要選取工作區做為要複查的程式碼庫︰
- 在「程式碼複查」視圖中的工具列上按一下複查圖示(
) > 複查工作區)。
執行程式碼複查
一旦您選取要複查的程式碼庫,就會執行程式碼複查。您可以檢查視圖右下角的進度列來追蹤其狀態。
檢視找到的循環相依關係清單
程式碼複查找到四個循環相依關係,如下一個畫面所示。循環相依關係是不想要的違反型樣,應該要避免。在循環相依關係中,一群物件交互連接的程度會使得變更任何一個物件就會影響所有的物件。

- 展開結構分析︰循環相依關係資料夾並留意下列內含的發現項目,如下一個畫面所示︰

- 每一個循環相依關係都會被指派最高的問題嚴重性層次 (
)。
- 其中兩個循環相依關係具有快速修正 (
) 可消除相依關係。
- 用滑鼠右鍵按一下清單中的第三個發現項目。快速修正蹦現功能表選項會根據解決方案而改變。針對您選取的循環相依關係,修正方式是將 static 欄位從基礎類別移到其他類別,藉此消除循環相依關係。
- 按一下快速修正︰從基礎類別移出 static 欄位。

套用快速修正
您選取的循環相依關係的快速修正是將 static 欄位從基礎類別移到其他類別。您可以選擇將欄位移到現有的類別或新的類別。
如果要移動欄位到新的類別︰
- 在下一個畫面中,請複查有關您將要修正的循環相依關係(亦稱為 tangle)的唯讀資訊︰
- tangle 中的某些類別
- tangle 中,類別的相依關係
- 按一下產生新的 Java 類別並輸入︰
- src/ 做為來源資料夾名稱
- com.ibm.r2a.rules.rsa.examples 做為套件名稱
- Defaults 做為類別名稱

- 按一下預覽,查看快速修正將要變更的程式碼。
- 展開欲執行的變更清單(如下列畫面所示),查看當快速修正將 static 欄位移到新類別時,將會對程式碼進行哪些變更。

- 按一下清單中的第四個變更(以 Font.java 為開頭),查看程式碼的並列視圖。左邊是原始的程式碼,右邊則是快速修正將會建立的重構程式碼。

- 按一下確定,套用快速修正到清單中的所有選取變更。
- 套用快速修正之後,您會看到確認的勾號,讓您知道問題已經解決。

您已完成練習 1.4:解決結構問題。
運用快速修正的能力
快速修正是提供給程式碼複查中部分的一般發現項目。藉由套用提供的快速修正,您可以利用自動方式來解決循環相依關係。您可以︰
- 識別及評估循環相依關係。
- 利用自動快速修正快速地消除相依關係。
- 查看快速修正將會對您的程式碼進行哪些變更。
- 每次都能一致地修正循環相依關係。
練習 1.4 整理
您已完成練習 1.4:解決結構問題。其中您執行了下列作業︰
- 執行程式碼複查來尋找循環相依關係。
- 辨識循環相依關係何時有提供的快速修正。
- 套用快速修正來解決循環相依關係︰
- 查看要進行的變更清單。
- 檢視每項變更的現有和重構的程式碼。
- 確認已套用快速修正。
請複查總結中的學習目標,完成此指導教學。