Edited at

メソッドのインライン化(Inline Method)

image.png

1つずつリファクタリング技法まとめ

個人的に簡単かつ取り入れ易いと思うものから


目的

すぐ引き出せるようにする


基本作業サイクル


  • システムを動かして仕様を精査

  • テストメソッドを作成

  • テストの失敗を確認

  • テストの成功を確認

  • 小さい変更、随時テスト実行(パターン追加失敗確認->成功確認)

  • 最後テスト実行

  • 最後動作確認


メソッドのインライン化(Inline Method)

呼び出し先のメソッドを呼び出し元に組み込み、呼び出し先のメソッドを削除すること

メソッドの抽出の逆


ポイント


  • 実際の処理と、抽出されているメソッド名が同じくらい分かりやすい


  • メソッドオブジェクトに持たせたいふるまいを実装しているメソッド内の呼び出しをインライン化することが多い

  • メソッドがポリモーフィックな場合はできない(オーバーライドメソッドを消す事になるため)


def evaluation

output ? 'Success' : 'Failed'
end

def output
@wrote >= 3
end

   ↓

def evaluation

@wrote >= 3 ? 'Success' : 'Failed'
end


書籍情報

Jay Fields (著), Shane Harvie (著), Martin Fowler (著), Kent Beck (著),

長尾 高弘(訳), リファクタリング:Rubyエディション

https://amzn.to/2VlyWML


雑感

分かり易さの基準によって切り出すべきかインライン化すべきの判断は違いそう

コンテキストとなる表現に近いか次第な感じがする

基本的には抽出のステップあってのインライン化の検討なはず