演習 1.4: 構造上の問題の解決
この演習は、『演習 1.1: 必要なリソースのインポート』が
完了していることを前提としています。演習 1.4 では、最初にユーザー・シナリオを
読みます。次に、ユーザー・シナリオに説明されているソフトウェア設計者の役割を
担い、演習 1.1 でインポートしたプロジェクトを使用して、演習を実行します。
ユーザー・シナリオ
設計者は、循環依存関係に特定のコードを確認するために、そのような
依存関係のみを検索する構造分析コード・レビューを実行します。
コード・レビューでは幾つかの循環依存関係が見つかり、設計者はその関係の一部に
クイック・フィックスが存在することに気付きます。クイック・フィックスは、
共通する検出結果を修復するために提供される自動化された方法です。設計者は、
コードをリファクタリングして循環がなくなるようにするために、ある循環依存関係に
クイック・フィックスを適用します。
最後の演習では、設計者はコード・レビューを実行して、検出結果の 1 つを修正します。
演習
この演習では、以下の作業を実行します。
- コード・レビューを実行して、循環依存関係を見つける。
- 循環依存関係にクイック・フィックスが提供されていることを認識する。
- クイック・フィックスを適用して、循環依存関係を解決する。
- 作成する変更点のリストを確認する。
- 変更点ごとに既存のリファクタリング済みコードを表示する。
- クイック・フィックスが適用されたことを確認する。
循環依存関係を検査するためのコード・レビューの選択
循環依存関係を検査するコード・レビューを選択するには、以下のようにします。
- 「コード・レビュー (Code Review)」ビューの
ツールバーで、「ルールの管理 (Manage Rules)」アイコン
を
クリックします。

- 「コード・レビューの選択 (Select Code Review)」リストで、「構造分析コード・レビュー
(Structural Analysis Code Review)」をクリックします。
- Structural Analysis フォルダーを展開して、Cyclic Dependency サブフォルダー以外を
すべてクリアします。
- 次の画面取りに示されているように、Cyclic Dependency サブフォルダーを
展開して、コード・レビューに適用するルールを表示します。「OK」をクリックします。

レビューを実行するコード・ベースの選択
レビューを実行するコード・ベースとしてワークスペースを選択するには、以下の手順を実行します。
- 「コード・レビュー (Code Review)」ビューのツールバーで、「確認 (Review)」アイコン
(
) >「ワークスペースの確認
(Review Workspace)」をクリックします。
コード・レビューの実行
レビューを実行するコード・ベースを選択した後で、コード・レビューを実行します。
ビューの右下隅にある進行状況表示バーを確認することで、状況を追跡できます。
見つかった循環依存関係のリストの表示
次の画面取りに示されているように、コード・レビューにより 4 つの循環依存関係が
見つかりました。循環依存関係は、回避しなければならない、望ましくない
アンチパターンです。循環依存関係では、オブジェクトのグループが
相互接続されているため、いずれかのオブジェクトが変更されると、他のすべての
オブジェクトが影響を受ける可能性があります。

- 次の画面取りに示されているように、Structural Analysis: Cyclic Dependency フォルダーを
展開して、以下の検出結果に注意します。

- それぞれの循環依存関係には、最も高い重大度レベルである「問題」
(
) が割り当てられています。
- これらの循環依存関係の 2 つには、依存関係を除去するためのクイック・
フィックス (
) があります。
- リストの 3 番目の結果を右クリックします。「クイック・フィックス
(Quick Fix)」ポップアップ・メニューの選択項目は、ソリューションによって
異なります。選択した循環依存関係のフィックスでは、基本クラスから別のクラスに
静的フィールドを移動することによって、循環依存関係を除去します。
- 「クイック・フィックス: 基本クラスから静的フィールドを移動 (Quick Fix: Move static field from base class)」を
クリックします。

クイック・フィックスの適用
選択した循環依存関係のクイック・フィックスでは、基本クラスから別の
クラスに静的フィールドを移動します。フィールドの移動先には、既存のクラスまたは
新規クラスを選択できます。
新規クラスにフィールドを移動するには、以下のようにします。
- 次の画面取りで、修正する循環依存関係 (交錯ともいわれます) に関する
読み取り専用の情報を確認します。
- 交錯の一部であるクラス
- 交錯状態のクラス間の依存関係
- 「新規 Java クラスの生成 (Generate a new Java class)」を
クリックして、次のように入力します。
- ソース・フォルダー名として src/
- パッケージ名として com.ibm.r2a.rules.rsa.examples
- クラス名として Defaults

- 「プレビュー」をクリックして、クイック・フィックスが変更する
コードを確認します。
- 次の画面取りに示されているように、「実行する変更内容
(Changes to be performed)」リストを展開して、静的フィールドを新規クラスに
移動したときにクイック・フィックスが行う正確な変更内容を確認します。

- Font.java で始まるリストの 4 番目の変更点をクリックして、コードの
横並びのビューを表示します。元のコードは左側にあり、クイック・フィックスによって
作成されるリファクタリング済みコードは右側にあります。

- 「OK」をクリックして、リストで選択したすべての変更点に
クイック・フィックスを適用します。
- クイック・フィックスを適用すると、問題が解決されたことがわかるように、
確認のチェック・マークが表示されます。

『演習 1.4: 構造上の問題の解決』が完了しました。
クイック・フィックスの利点の利用
クイック・フィックスは、コード・レビューの幾つかの共通する検出結果のために
提供されます。提供されたクイック・フィックスを適用することによって、
自動化された方法で循環依存関係を解決できます。以下のことを行うことができます。
- 循環依存関係を確認して評価する。
- 自動化されたクイック・フィックスを使用して依存関係を素早く
除去する。
- クイック・フィックスがコードに行った正確な変更内容のリストを確認する。
- 毎回、確実に循環依存関係を修正する。
演習 1.4 の要約
『演習 1.4: 構造上の問題の解決』が完了しました。この演習では、
次のタスクを実行しました。
- コード・レビューを実行して、循環依存関係を見つける。
- 循環依存関係にクイック・フィックスが提供されていることを認識する。
- クイック・フィックスを適用して、循環依存関係を解決する。
- 作成する変更点のリストを確認する。
- 変更点ごとに既存のリファクタリング済みコードを表示する。
- クイック・フィックスが適用されたことを確認する。
『要約』の学習目標を確認して、チュートリアルを
完了します。