メソッドの抽出【リファクタリング】
状況
あるメソッドの処理がとても長い
同じような処理がメソッドをまたがって書かれている
対処
- 長い処理部分をメソッドとして切り出す
メリット
他のメソッドから使える可能性が増える
上位メソッド(抽出されたメソッドを使う元)の記述が読みやすくなる
メソッドの粒度が細かければ、オーバライド(スーパークラスを継承したサブクラスでの上書き)もしやすくなる
手順
新たなメソッドを作成し、処理内容ではなく、実現する結果に着目して命名する
抽出されるコードを、上記にコピー
抽出されるコードから、スコープが局所的な変数への参照を探す。ローカル変数とメソッドのパラメータがこれにあたる
上記のうち、抽出されるコードの中で変更されるものは戻り値に、変更されないものは新たなメソッドの引数にする
上記の、戻り値にする検討の際、変更される値が複数ある場合、言語によっては戻り値にできないことがある。 その場合は、「一時変数の分離」や「問い合わせによる一時変数の置き換え」により、このメソッドが戻すべき変数を減らすことを試みる
コンパイルする
抽出元のメソッド内の処理を、新規メソッドの呼び出しに置き換える
コンパイルしてテストする
楽天ブックス: リファクタリング新装版 - 既存のコードを安全に改善する - マーチン・ファウラー - 9784274050190 : 本