Ruby で !! のつかいどころ
日記です / Ruby Patterns - ✘╹◡╹✘ http://t.co/tWyrSRcQ0B
— 中村氏 (@r7kamura) 2014, 1月 22
Rubyのいいパターンについて言及されていました。
なるほどなーと思ったので、自分用にもメモっときます。
[1] pry(main)> !!"hoge" (pry):1: warning: string literal in condition => true [2] pry(main)> !!1 => true [3] pry(main)> !!0 => true [4] pry(main)> !!false => false [5] pry(main)> !!nil => false
上のような感じで
RUbyでは、!! をつけると true か false で返してくれます。
だから、
? がつくメソッドには必ず式の先頭に !! をつけて true, false になるようにした方よい。
(nil とか オブジェクトを返すのは意味合いがわかりずらくなる)
サンプルコード
class Entry def has_user? !!user end def user User.find_by(id: user_id) end end
たしかに、if user とかで判定するよりもこっちの方がキレイだし納得できますね。
本家のブログの方にはテストも含めたメソッドの命名規則なんかのパターンについても書かれています。とても参考になります。