😊
【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