1つずつリファクタリング技法まとめ
個人的に簡単かつ取り入れ易いと思うものから
目的
すぐ引き出せるようにする
基本作業サイクル
- システムを動かして仕様を精査
- テストメソッドを作成
- テストの失敗を確認
- テストの成功を確認
- 小さい変更、随時テスト実行(パターン追加失敗確認->成功確認)
- 最後テスト実行
- 最後動作確認
引数オブジェクトの導入(Introduce Parameter Object)とは
分かりやすいアルゴリズムでメソッドの中身を書き換えること
ポイント
- テストに対して新しいアルゴリズムを実行し、結果が同じになることを確認する
- 実装時は新旧両方の結果に着目し、テストケースと失敗の関係性を理解する
例
def members(people)
members = []
people.each do |person|
if (person == 'Luffy')
end
if (person == 'Zoro')
end
if (person == 'Sanji')
end
end
members
end
↓
def members(people)
people.select do |person|
%w(Luffy Zoro Sanji).include? person
end
end
書籍情報
Jay Fields (著), Shane Harvie (著), Martin Fowler (著), Kent Beck (著),
長尾 高弘(訳), リファクタリング:Rubyエディション
https://amzn.to/2VlyWML
雑感
単純なアルゴリズムだけにまず抽出して、書き換え時の考慮範囲を限定的にする。