技術向上

プログラミングの学び、気になるテクノロジーやビジネストレンドを発信

メソッドの抽出【リファクタリング】

状況

  • あるメソッドの処理がとても長い

  • 同じような処理がメソッドをまたがって書かれている


対処

  • 長い処理部分をメソッドとして切り出す


メリット

  • 他のメソッドから使える可能性が増える

  • 上位メソッド(抽出されたメソッドを使う元)の記述が読みやすくなる

  • メソッドの粒度が細かければ、オーバライド(スーパークラスを継承したサブクラスでの上書き)もしやすくなる


手順

  • 新たなメソッドを作成し、処理内容ではなく、実現する結果に着目して命名する

  • 抽出されるコードを、上記にコピー

  • 抽出されるコードから、スコープが局所的な変数への参照を探す。ローカル変数とメソッドのパラメータがこれにあたる

  • 上記のうち、抽出されるコードの中で変更されるものは戻り値に、変更されないものは新たなメソッドの引数にする

  • 上記の、戻り値にする検討の際、変更される値が複数ある場合、言語によっては戻り値にできないことがある。 その場合は、「一時変数の分離」や「問い合わせによる一時変数の置き換え」により、このメソッドが戻すべき変数を減らすことを試みる

  • コンパイルする

  • 抽出元のメソッド内の処理を、新規メソッドの呼び出しに置き換える

  • コンパイルしてテストする


楽天ブックス: リファクタリング新装版 - 既存のコードを安全に改善する - マーチン・ファウラー - 9784274050190 : 本