パンくず
リファクタリング-プログラマーの体質改善テクニック
メソッド呼び出しの単純化
内容
メソッド呼び出しの単純化
リファクタリング名 | 対象 | 対応 |
---|---|---|
メソッド名の変更 | メソッドの名前がその目的を正しく表現できていない | メソッド名の変更 |
引数の追加 | あるメソッドが、呼び出し元からより多くの情報を必要としている | その情報を渡すために引数を追加する |
引数の削除 | ある引数が、もはやメソッド本体から使われていない。 | 引数を削除する |
問い合わせと更新の分離 | 1つのメソッドが値を返すと同時にオブジェクトの状態を変更している | 問い合わせようと更新用の2つのメソッドをそれぞれ作成する |
メソッドのパラメータ化 | 複数のメソッドが、異なる値に対してよく似た振る舞いをしている。 | その異なる値を一つの引数として受け取るメソッドと作成する |
明示的なメソッド群による引数の置き換え | 引数の特定の値によって異なるコードが実行されるメソッドがある | 引数の値に対応する別々のメソッドを作成する |
オブジェクトそのものの受け渡し | あるオブジェクトから複数の値を取得し、それらの値をメソッド呼び出しの引数として渡している | 代わりにオブジェクトそのものを渡す |
メソッドによる引数の置き換え | あるオブジェクトがメソッドを呼び出し、その戻り値を別のメソッドの引数として渡している。受信側は、そのメソッドを呼び出させる | 引数を削除し、受信側にそのメソッドを呼び出させる |
引数オブジェクトの導入 | 本来まとめて扱うべき一覧の引数がある | それらをオブジェクトに置き換える |
setメソッドの削除 | フィールドの値が生成時に設定され、決して変更されない | そのフィールドに対するすべてのsetメソッドを削除する |
メソッドの隠蔽 | メソッドが自分の定義されているクラス意外からまったく使用されていない | そのメソッドを非公開にする |
Factory Methodによるコンストラクタの置き換え | オブジェクトを生成する際に、単純な生成以上のことをしたい | ファクトリメソッドを使って、コンストラクタを置き換える |
ダウンキャストのカプセル化 | メソッドが返すオブジェクトが、呼び出し側によってダウンキャストされる必要がある。 | そのダウンキャストをメソッド内に移動する |
例外によるエラーコードの置き換え | メソッドがエラーを示す特別なコードをリターンしている | 代わりに例外を発生される。 |
条件判定による例外の置き換え | 例外を発生させているが、本来は呼び出し側が先にチェックすべきである | 最初に条件判定をするように呼び出し側を修正する |