Ruby で !! のつかいどころ

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 とかで判定するよりもこっちの方がキレイだし納得できますね。

本家のブログの方にはテストも含めたメソッドの命名規則なんかのパターンについても書かれています。とても参考になります。