3
Help us understand the problem. What are the problem?

posted at

updated at

Organization

if式やループのネストを減らす方法まとめ

結論

  • 早期リターンする
  • 条件式で代入を行う

以上のやり方でネストを減らすことができます。

早期リターンする

例えば、受け取った数字が50より大きいとき2倍にする関数があるとき

早期リターンしない場合。

def double(number)
  if number > 50
    number * 2
  end
end

早期リターンする場合。

def double(number)
  return if number <= 50
  number * 2
end

ループ内の場合はnext if numberでも良いですね。

条件式で代入を行う

例えば、ユーザーを1つ取り出して何かしたいとき

条件式で代入しない場合

def update
  user = User.find(params[:id])
  if user
    ...
  end
end

条件式で代入する場合

def update
  if user = User.find(params[:id])
    ...
  end
end

最後に

ネストがなければ良いというものでもないですが、あまりに深い場合は減らすようにしてもいいかもしれません。

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
3
Help us understand the problem. What are the problem?