🐈
[Rails]unless ~ else ~ end はリファクタしましょう
初めに
以前unless
はできるだけ使わず、if
を使おうという趣旨の記事を書きました。
上記の記事では取り上げませんでしたが、unless ~ else ~ end
という書き方も微妙です。
そして、こちらは簡単にリファクタができるのでチャチャっと直してしまいましょう。
(我が物顔で書いてますが、先輩に教えていただいたことのアウトプットです)
本題
リファクタ前のコード
unless users.count > books.count
# 処理A
else
# 処理B
end
日本語訳すると
「ユーザー数が本の数より多くないときは処理Aをして、そうでないとき、つまり、ユーザー数が本の数より多くない ことはない ときに処理Bをする」になります。
もう少しわかりやすくすると
「ユーザー数が本の数より多くないときは処理Aをして、そうでないとき、つまり、ユーザー数が本の数より多いときに処理Bをする」になります。
二重否定は肯定になるわけですが、コードを読む度にこの変換を脳内で行う必要が生じてしまいます。
つまり、このコードは可読性の低いコードです。
というわけで、リファクタしましょう。
リファクタ後のコード
if users.count > books.count
# 処理B
else
# 処理A
end
日本語訳すると
「ユーザー数が本の数より多いときは処理Bをして、そうでないとき、つまり、ユーザー数が本の数より多くないときは処理Aをする」になります。
こうなると理解しやすく、可読性の高いコードとなりますね。
簡単にまとめると
-
unless
は極力使わない -
unless A else B end
はif B else A end
に書き換える。
以上〜
Discussion