Ruby: unless vs if not
Solution 1:
I hope this helps you: https://github.com/rubocop-hq/ruby-style-guide#if-vs-unless
Prefer unless over if for negative conditions (or control flow ||).
# bad do_something if !some_condition # bad do_something if not some_condition # good do_something unless some_condition
I personally agree with what's written there choosing unless something
over if !something
for modifiers and simple ones and when there's an else
prefer if
.
Solution 2:
I use unless
every time, except when there is an else
clause.
So, I'll use
unless blah_blah
...
end
but if there is an else condition, I'll use if not
(or if !
)
if !blah_blah
...
else
...
end
After using if !
for years and years and years, it actually took me a while to get used to unless
. Nowadays I prefer it in every case where reading it out loud sounds natural.
I'm also a fan of using a trailing unless
increment_by_one unless max_value_reached
I'm using these method/variable names obviously as a readability example - the code's structure should basically follow that pattern, in my opinion.
In a broader sense, the structure should be: take_action unless exception_applies
Solution 3:
if not condition
is rarely used. Ruby programmers (usually coming from other languages) tend to prefer the use if !condition
.
On the other side, unless is widely use in case there is a single condition and if it sounds readable.
Also see making sense with Ruby unless for further suggestions about unless coding style.