分解メソッドの構成
📌 メソッド構成
シンプルな方法、コードの重複を排除し、将来の改善のための基礎を築く
▼▼▼抽出方法
グループ化できるコードがある場合は、適切なメソッドを作成し、メソッドに移動します.
✔¥メリット
▼▼▼方法行内
メソッド呼び出し部分がメソッド自体より詳細である場合、メソッド呼び出しをメソッド内容に置き換え、メソッドを削除します.
✔¥メリット
▼▼抽出変数(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()の演算が呼び出されるため、不要な演算が発生します.
#一時変数行内
変数の参照を式自体に変更する
✔¥メリット
欠点
→
一時変数をクエリーに変更
式の結果を一時変数に保存している場合は、式を新しいメソッドに挿入し、一時変数ではなくメソッドを呼び出します.
✔¥メリット
▼▼一時変数を分割
式の結果を一時変数に保存している場合は、式を新しいメソッドに挿入し、一時変数ではなくメソッドを呼び出します.
✔¥メリット
パラメータの割り当て解除
パラメータではなく領域変数の使用
✔¥メリット
▼▼方法を方法の対象に変更
領域変数の交差によりメソッドを抽出できない場合は、メソッドを個別のクラスに変換します.
✔¥メリット
欠点
▼▼アルゴリズム置換
アルゴリズムを実装する方法の本文を新しいアルゴリズムに変更
📑 参考資料
Reference
この問題について(分解メソッドの構成), 我々は、より多くの情報をここで見つけました https://velog.io/@hi_potato/Refactoring-composing-methodsテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol