結論
- 早期リターンする
- 条件式で代入を行う
以上のやり方でネストを減らすことができます。
早期リターンする
例えば、受け取った数字が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
最後に
ネストがなければ良いというものでもないですが、あまりに深い場合は減らすようにしてもいいかもしれません。