TOP

このエントリーをはてなブックマークに追加

Long Parameter List

Long Parameter List

Long Parameter List(長すぎるパラメータリスト)

兆候と症状 メソッドの3つまたは4つ以上のパラメーター。

問題の理由 Long Parameter Listは、いくつかの種類のアルゴリズムが単一のメソッドに統合された後に発生する場合があります。実行されるアルゴリズムとその方法を制御するために、Long Parameter Listが作成されている場合があります。 Long parameter listsは、クラスを互いに独立させる努力の副産物でもあります。たとえば、メソッドに必要な特定のオブジェクトを生成するコードをメソッド内部から呼び出し元に移動した場合、生成されたオブジェクトは引数としてメソッドに渡されます。これにより、元のクラスはオブジェクト間の関係を認識しなくなり、依存関係が減少します。ただし、このようなオブジェクトがいくつも作成された場合、各オブジェクトには独自のパラメーターが必要になります。つまり、パラメーターリストが長くなります。 そのようなリストを理解することは難しく、それらが長くなるにつれて矛盾し、使いにくくなります。Long parameter listsの代わりに、メソッドは自オブジェクトのデータを使用できます。現在のオブジェクトに必要なデータがすべて含まれていない場合は、必要なデータを取得する別オブジェクトをメソッドパラメーターとして渡すことができます。

対処 パラメーターに渡される値を確認します。引数の一部が別のオブジェクトのメソッド呼び出しの結果である場合は、「Replace Parameter with Method Call」を使用します。このリファクタリングによって作成されたオブジェクトは、対象のクラスのフィールドに配置するか、メソッドパラメーターとして渡すことができます。

  • 別のオブジェクトから受け取ったデータのグループをパラメーターとして渡す代わりに、「Preserve Whole Object」を使って、オブジェクト自体をメソッドに渡します。
  • 関係のないデータ要素が複数ある場合、「Introduce Parameter Object」を介してそれらを単一のパラメータオブジェクトにマージできる場合があります。

効果

  • コードが読みやすく、短くなる。
  • リファクタリングすることでコードの重複に気づくきっかけになる。



書籍としてはこの辺りが参考になると思います。

リファクタリング第2版
refactoring
レガシーコード改善ガイド
legacy_code