Long Method
Long Method
兆候と症状 メソッドの行数が多すぎる状態。一般に、1メソッドの行数が10行を超える場合、短くすることができないかを考える必要があります。
問題の理由 メソッドには常に何かしらの処理が追加され続けますが、処理が削除されるということはめったにありません。コードは読むよりも書く方が簡単なので、この Code Smell は、メソッドが異常なほど大きくなるまで気付かれないままです。 精神的には、既存のメソッドに処理を追加するよりも新しいメソッドを作成する方が難しく感じられます。たった2行の処理を追加するためだけに新しいメソッドを1つ追加するのが難しい場合などです。このようにして既存のメソッドに追加されたコードがスパゲッティコードの始まりになります。
対処 経験則として、メソッド内の何かにコメントする必要があると感じた場合、このコードをメソッド内から抽出して新しいメソッドを作成する必要があります。説明が必要な場合は、1行であっても別の方法に分割することができます。また、メソッドにわかりやすい名前が付けられている場合、コードを調べてその機能を確認する必要はありません。
- メソッド本体の長さを短くするには、「Extract Method」を使用します。
- ローカル変数とパラメーターがメソッドの抽出に干渉する場合は、「Replace Temp with Query」、「Introduce Parameter Object」、または「Preserve Whole Object」を使用します。
- 上記のレシピがどれも役に立たない場合は、「Replace Method with Method Object」を適用してメソッド全体を別のオブジェクトに移動してみてください。
- 条件演算子(3項演算子)とループは、コードを別のメソッドに移動できる良い手がかりです。3項演算子の場合は、「Decompose Conditional」を使用します。ループが邪魔な場合は、「Extract Method」を試してください。
効果
- オブジェクト指向プログラミングにおいて、メソッドが短い方がそのクラスの寿命は長くなります。メソッドが長くなるとそれを理解することが難しくなり、メンテナンスも困難になります。
- さらに、メソッドが長くなるとコードの重複を発見するのが難しくなります。
Performance リファクタリングによってメソッドが増えることがあります。 多くの人は、メソッドが増えると処理性能に影響があると主張します。しかしほとんどの場合、処理性能に与える影響はごくわずかです。 さらに、明確で理解可能なコードが得られたので、コードが再構築され、必要に応じて実際のパフォーマンスを向上させるための真に効果的な方法を見つける可能性が高くなります。
書籍としてはこの辺りが参考になると思います。
リファクタリング第2版

レガシーコード改善ガイド
