神は細部に宿る

この題は、会社で使うネタ。

良いプログラマかどうかを見極めるには、コードを読めば良い。細かい部分にセンスを感じさせるプログラマは、大きいプログラムもセンスよく実装できる。
逆に、そういった細かい部分のセンスを理解すれば、大きいプログラムも書けるようになれる・・・かも?

ということで、今回は比較条件式の書き方。ルールは「数学的に美しい順番で書く」。

まず、aという変数について注目して、aの値によって場合分けするなら、

a <= X
a > X
a == X

のように、注目しているものを左に書く。最後の==は、右辺が定数のとき、左右を逆転させて=とのタイプミスを防ぐというスタイルもあるが、そんなバカなバグ普通出さないし(最悪でもWarningで気付け)、非常に美しくないのでキライだ。

aが取りうる範囲が上限・下限ともに決められているのならこう書く。

 X <= a < Y

・・・と言いたいところだが、C言語やJavaでは同じにはできないので、こう書く。

 X <= a && a < Y

&&は論理演算子で、比較演算子よりも優先順位が低いことが直感的に判るので、()でくくらなくてよい。()でくくるのはbit演算と数値演算のように優先順位が直感的に判らないもの。
論理演算が数値演算・bit演算・比較演算よりも優先順位が低いという事を直感的に感じるのもセンスのうち。論理演算は他の演算とかで出てきた真偽値の組み合わせを評価するから、後で評価される。

このブログに乗せているコードは引用を除き CC0 1.0 で提供します。