😊
【Ruby】unlessは脳内変換が必要なので出来ればifを使いたい
例えば簡単だけど以下のようなケース。
# todo.done?がfalseとする
unless todo.done?
puts 'Not done'
else
puts 'Done'
end
#=> 'Not done'
todo.done?
はfalseなので、unless todo.done?
が評価され、puts 'Not done'
が実行される。
しかし、個人的にunless
はどうも脳内変換が必要で思考が一瞬止まる感じがあって苦手だ。よって以下のように書きたい。
# todo.done?がfalseとする
if todo.done?
puts 'Done'
else
puts 'Not done'
end
#=> 'Not done'
こっちのほうが思考の流れに沿って理解しやすい。
そもそもunless
は後置unlessで使われることが多いイメージ。個人的には、どうしてもunless
が必要なとき以外はあまり書かないようにしている。
と思ったらすでにいろいろ議論があるみたい。
Discussion