unless what

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

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?


Then we can have:

puts user.name if user.name.not_nil?

if user.name.not_nil?
  puts user.name

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.

Jared Carroll

Sharpen your programming skills by completing coding exercises that are reviewed by other developers at Upcase today.