ちょっとrubyでコードを書くことになって、早期returnを使いたくなる場面があったので、そのときの整理。
Javaで結構使っていたのですが、rubyでどう書くか躊躇ったので思い出せるようにメモ。
サンプルコード
def isXXX(arg)
return false if arg.nil?
return false if arg == 'hoge'
return true;
end
そもそも早期returnとは?
あまり起きないケース、あるいは重要でないケースでifのネストを深くしたり、else句を使うのを避けるためのテクニックです。条件を満たしたときに、後ろに影響を及ぼさないようにすぐにreturnさせる、というそのものずばりです。「ガード節による条件記述の置き換え」ともいうようです。(returnだけでなく例外スローもするケースもあるようです。)
さっきのを早期returnなしで書くとこんな感じです。
def isXXX(arg)
if (arg.nil)
false
else if (arg == 'hoge')
false
else
true
end
end
このくらいなら、そんなでもないですが、条件の記述が長くなったり、パターンが多いときは早期returnの形にすると、それぞれを分けて考えやすくなります。
参考サイト
- http://dqn.sakusakutto.jp/2012/08/if-else.html
- http://komaji504.hateblo.jp/entry/2016/06/07/004503
- http://yamitzky.hatenablog.com/entry/2013/11/21/004437
- http://www.slideshare.net/MoriharuOhzu/ss-14083300
- http://d.hatena.ne.jp/asakichy/20090614/1244934302
- http://bleis-tift.hatenablog.com/entry/20090124/1232768059