分解メソッドの構成


📌 メソッド構成


シンプルな方法、コードの重複を排除し、将来の改善のための基礎を築く

▼▼▼抽出方法


グループ化できるコードがある場合は、適切なメソッドを作成し、メソッドに移動します.

✔¥メリット

  • より読みやすいコード
  • は繰り返し使用可能で、コードの繰り返しを減らす
  • コードの独立部分を分離し、エラーの可能性を低減する
  • .

    ▼▼▼方法行内


    メソッド呼び出し部分がメソッド自体より詳細である場合、メソッド呼び出しをメソッド内容に置き換え、メソッドを削除します.

    ✔¥メリット

  • の不要なメソッドの数を減らし、コードをより簡単にします.

    ▼▼抽出変数(Extract Variable)


    式の結果または一部を説明する個別の変数を作成します.
    <変更前>
    void renderBanner() {
      if ((platform.toUpperCase().indexOf("MAC") > -1) &&
           (browser.toUpperCase().indexOf("IE") > -1) &&
            wasInitialized() && resize > 0 )
      {
        // do something
      }
    }
    <変更後>
    void renderBanner() {
      final boolean isMacOs = platform.toUpperCase().indexOf("MAC") > -1;
      final boolean isIE = browser.toUpperCase().indexOf("IE") > -1;
      final boolean wasResized = resize > 0;
    
      if (isMacOs && isIE && wasInitialized() && wasResized) {
        // do something
      }
    }

    ✔¥メリット

  • コードは可読性がよく、注釈が少なく、
  • を読みやすい.

    欠点

  • 不要な演算を実行すると、プログラムのパフォーマンスが低下する可能性があります.
    条件文がif(a()||b()であり、a()がtrueである場合、b()は演算を必要としないため実行される.
    ただし、変数として宣言されている場合は、常にa()とb()の演算が呼び出されるため、不要な演算が発生します.
  • #一時変数行内


    変数の参照を式自体に変更する

    ✔¥メリット

  • 不要な変数を排除することにより、可読性が若干向上する
  • .

    欠点

  • の一時値を複数回繰り返し使用すると、大量のキャッシュが使用されます.
  • のシンプルさが性能を低下させるかチェックする必要がある

    一時変数をクエリーに変更


    式の結果を一時変数に保存している場合は、式を新しいメソッドに挿入し、一時変数ではなくメソッドを呼び出します.

    ✔¥メリット

  • 方法の理解を容易にする目的は、コードをより可読性のある
  • にすることである.
  • メソッドの繰り返し使用により、重複コード
  • を除去することができる.

    ▼▼一時変数を分割


    式の結果を一時変数に保存している場合は、式を新しいメソッドに挿入し、一時変数ではなくメソッドを呼び出します.

    ✔¥メリット

  • 交換が容易、メンテナンスが容易
  • 変数名は意図を理解しやすく、コードは
  • を読みやすい.

    パラメータの割り当て解除


    パラメータではなく領域変数の使用

    ✔¥メリット

  • 交換が容易、メンテナンスが容易
  • メソッドを使用する場合に役立つ
  • ▼▼方法を方法の対象に変更


    領域変数の交差によりメソッドを抽出できない場合は、メソッドを個別のクラスに変換します.

    ✔¥メリット

  • 法は、
  • が大きくなることを防止することができる.
  • は、従来のクラスを汚染することなくクラス内のサブメソッドとして分解することができる
  • .

    欠点

  • クラスが追加され、プログラム全体の複雑さが増加しました.

    ▼▼アルゴリズム置換


    アルゴリズムを実装する方法の本文を新しいアルゴリズムに変更

    📑 参考資料

  • https://refactoring.guru/refactoring