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.