1つずつリファクタリング技法まとめ
個人的に簡単かつ取り入れ易いと思うものから
目的
すぐ引き出せるようにする
基本作業サイクル
- システムを動かして仕様を精査
- テストメソッドを作成
- テストの失敗を確認
- テストの成功を確認
- 小さい変更、随時テスト実行(パターン追加失敗確認->成功確認)
- 最後テスト実行
- 最後動作確認
条件式の統合(Consolidate Conditional Expression)とは
同じ返り値を返す複数の条件式を、メソッドとして抽出してワンライナーにすること
条件式をORやANDでまとめること
ポイント
- 返り値が同じ
例
- OR系
- 条件式が順に並んでいる
def calorie
return 0 if @food == 'donut'
return 0 if @food == 'castella'
return 0 if @food == 'ice'
end
↓
def calorie
return 0 if @food == 'donut' || @food == 'castella' || @food == 'ice'
end
↓
# そうすると条件文の分解ないしメソッドの抽出もできる
def calorie
return 0 if date?
end
def date?
@food == 'donut' || @food == 'castella' || @food == 'ice'
end
- AND系
- 条件式がネストしている
def calorie
if @user == 'date'
if @food == 'donut'
0
end
end
end
↓
def calorie
return 0 if @user == 'date' && @food == 'donut'
end
書籍情報
Jay Fields (著), Shane Harvie (著), Martin Fowler (著), Kent Beck (著),
長尾 高弘(訳), リファクタリング:Rubyエディション
https://amzn.to/2VlyWML
雑感
やってる事は同じなんだけど説明の観点が違う(もしくは包含している)というのがたくさんある