if/unless 修飾子の使い所
if/unless 修飾子って、break とか next 以外の一般の文では使わないようにしようと、時々思う。でも、つい使っちゃうんだけど。
なんで使わない方が良いと思うかというと、「ふん、ふん」と読んで右を見て、if とか書いてあると、「なんだ。めったに実行しないのか」と思ったりするのが理由。構文ハイライトのあるエディタを使っていれば、ifやunlessが目立つので良いかとも思うけど、エディタ依存のスタイルというのもなんだかな。それから、時間の順序が逆。こっちのほうが大きいか。
next if とかはそれでイディオムに見えるので使っても良いかなと思う。
あと、
File.delete(file_name) if File.exist?(file_name)
とかはいいかな。あくまで、実行部分と条件部分のバランスの問題。
一般の文の場合、例えば、
# (1) url = a["href"] if a.text == "次を表示"
と、
# (2) if a.text == "次を表示" then url = a["href"] end
と、
# (3) if a.text == "次を表示" url = a["href"] end
と、どれが良いか。やっぱり、(1) は良くないよね。(2)のスタイルは避けられることが多いと思うけど、(3)の かさばり感 がいやだな。
あ、意外と、
# (4) a.text == "次を表示" and url = a["href"]
がしっくり来るかも。少なくとも、シェルスクリプトだとこのスタイルだな。