LoginSignup
0
1

More than 5 years have passed since last update.

ループからコレクションクロージャメソッドへ(Replace Loop with Collection Clousure Method)

Posted at

image.png

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

雑感

チェーンが長すぎるとわかり易いとはいえなくなるので、コレクションクロージャ単体をメソッドとして切り出す方が良さそう

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1