I’m not a huge fan of Ruby’s unless
keyword. I mean its nice but it can take
some while to get used to. For single line unless
statements like this:
puts user.name unless user.name.nil?
It’s nice and easy. Here’s how I’d say that in english “Print the user’s name unless the user doesn’t have a name”. Structuring it the other way is not as intuitive to me:
unless user.name.nil?
puts user.name
end
Here’s how I’d say that in english “Unless the user doesn’t have a name, print
the user’s name”. That doesn’t sound good at all. In everyday language I
always put the unless
at the end of the sentence and not the beginning, its
just easier for me to understand. Why do we even need unless
? Let’s trash it
and replace it with something else:
class Object
def not_nil?
! nil?
end
end
Then we can have:
puts user.name if user.name.not_nil?
if user.name.not_nil?
puts user.name
end
That’s much better, unless
never made it into most of the “mainstream”
languages most of us grew up on; so coming into OO scripting languages like ruby
it may take some time to get this new keyword.