演習 1.4: 構造上の問題の解決
この演習では、『演習 1.1: 必要なリソースのインポート』を完了していることを想定としています。演習 1.4 では、最初にユーザー・シナリオを読みます。次に、ユーザー・シナリオで説明しているソフトウェア設計者の役割を想定し、演習 1.1 でインポートしたプロジェクトを使用して演習を完了します。
ユーザー・シナリオ
特に循環依存関係についてコードを検査するために、設計者は、循環依存関係のみを検出する構造分析コード・レビューを実行します。このコード・レビューは一部の循環依存関係を検出し、即時修正が存在する場合は設計者に提示します。即時修正は、よくある検出結果を自動的に修正する方法として提供されています。コードをリファクタリングして循環を解消するには、設計者が循環依存関係に即時修正を適用します。
最後の演習では、設計者がコード・レビューを実行していずれかの検出結果を修正します。
演習
この演習では、以下の作業を行います。
- 構造分析コード・レビューを実行して循環依存関係を検出します。
- 循環依存関係に即時修正が提供されているかを確認します。
- 即時修正を適用して循環依存関係を解決します。
- 行う変更のリストを表示します。
- 各変更について既存のコードとリファクタリングしたコードを表示します。
- 即時修正を適用したことを確認します。
循環依存関係を検査するコード・レビューの選択
循環依存関係を検査するコード・レビューを選択するには、以下のようにします。
- 「コード・レビュー」ビューのツールバーで、「ルールの管理」アイコン
をクリックします。

- 「コード・レビューの選択」リストで、「構造分析コード・レビュー」をクリックします。
- 「構造分析」フォルダーを展開し、「循環依存関係」サブフォルダー以外をすべてクリアします。
- 「循環依存関係」サブフォルダーを展開し、コード・レビューで適用するルールを表示します (以下の画面取りを参照してください)。「OK」をクリックします。

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

- 「構造分析: 循環依存関係」フォルダーを展開すると、以下の検出結果が表示されます (次の画面取りを参照してください)。

- 各循環依存関係には、最高の重大度レベルとして問題 (
) が割り当てられます。
- これらの循環依存関係のうち、2 つには依存関係を除去するための即時修正 (
) があります。
- リストの 3 番目の検出結果を右マウス・ボタンでクリックします。「即時修正」ポップアップ・メニューの選択項目は、解決策に応じて異なります。選択した循環依存関係に対する修正は、基本クラスから別のクラスに static フィールドを移動して循環依存関係を除去することです。
- 「即時修正: 基本クラスからの static フィールドの移動」をクリックします。

即時修正の適用
選択した循環依存関係に対する即時修正は、基本クラスから別のクラスに static フィールドを移動することです。フィールドは、既存のクラスか新規のクラスに移動できます。
フィールドを新規クラスに移動するには、以下のようにします。
- 次の画面取りのように、修正する循環依存関係 (交錯とも呼びます) に関する読み取り専用情報を確認します。
- 「新規 Java クラスの生成」をクリックし、以下のように入力します。
- ソース・フォルダー名は src/
- パッケージ名は com.ibm.r2a.rules.rsa.examples
- クラス名は Defaults

- 「プレビュー」をクリックし、即時修正が変更するコードを確認します。
- 「実行される変更」リストを展開し (以下の画面取りを参照)、即時修正で static フィールドを新規クラスに移動したときにコードに対して行われる変更の正確な内容を確認します。

- リストの 4 番目の変更 (Font.java で始まるもの) をクリックし、コードの横並びビューを表示します。元のコードは左側に、即時修正によって作成されるリファクタリング後のコードは右側に表示されます。

- 「OK」をクリックし、リストで選択したすべての変更に即時修正を適用します。
- 即時修正を適用すると確認用にチェックマークが表示され、問題が解決されたことが分かります。

『演習 1.4: 構造上の問題の解決』は完了です。
即時修正機能の活用
即時修正は、コード・レビューでよく検出される一部の検出結果に対して提供されています。提供されている即時修正を適用することにより、循環依存関係検出結果を自動的に解決できます。以下のことが可能です。
- 循環依存関係を識別して評価する。
- 自動化された即時修正で迅速に依存関係を除去する。
- 即時修正でコードに対して行われる変更の正確な内容のリストを確認する。
- 毎回一貫した方法で循環依存関係を修正する。
演習 1.4 のまとめ
『演習 1.4: 構造上の問題の解決』は完了です。ここでは、以下の作業を行いました。
- 構造分析コード・レビューを実行して循環依存関係を検出しました。
- 循環依存関係に即時修正が提供されているかを確認しました。
- 即時修正を適用して循環依存関係を解決しました。
- 行う変更のリストを表示しました。
- 各変更について既存のコードとリファクタリングしたコードを表示しました。
- 即時修正を適用したことを確認しました。
『要約』に記載されている学習目標を確認してチュートリアルを完了します。