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
雑感
分かり易さの基準によって切り出すべきかインライン化すべきの判断は違いそう
コンテキストとなる表現に近いか次第な感じがする
基本的には抽出のステップあってのインライン化の検討なはず