1つずつリファクタリング技法まとめ
個人的に簡単かつ取り入れ易いと思うものから
目的
すぐ引き出せるようにする
基本作業サイクル
- システムを動かして仕様を精査
- テストメソッドを作成
- テストの失敗を確認
- テストの成功を確認
- 小さい変更、随時テスト実行(パターン追加失敗確認->成功確認)
- 最後テスト実行
- 最後動作確認
ループからコレクションクロージャメソッドへ(Replace Loop with Collection Clousure Method)とは
each系の処理をmap系の処理にすること
ブロック内でのループ処理の記述から、メソッドチェーンを実現可能な記法にすること
ポイント
- Ruby特有のリファクタリングともいえそう
- 繰り返し処理した結果を返却したい場合に、ループの外から変数として渡す必要がなくなる
- 複数の処理をループ内で行っている場合は、メソッドチェーンで実現できる
例
fruits = []
foods.each do |food|
fruits << food.values_at(
:apple, :orange
)
end
↓
fruits = foods.map {|food|
food.values_at(
:apple, :orange
)
}
書籍情報
Jay Fields (著), Shane Harvie (著), Martin Fowler (著), Kent Beck (著),
長尾 高弘(訳), リファクタリング:Rubyエディション
https://amzn.to/2VlyWML
雑感
チェーンが長すぎるとわかり易いとはいえなくなるので、コレクションクロージャ単体をメソッドとして切り出す方が良さそう