---
title: unless what
teaser:
tags: web,ruby
author: Jared Carroll
published_on: 2007-04-12
---

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:

```ruby
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:

```ruby
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:

```ruby
class Object

  def not_nil?
    ! nil?
  end

end
```

Then we can have:

```ruby
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.
