LoginSignup
37
17

More than 5 years have passed since last update.

比較演算子「>」「>=」を使わなければ QOL が上昇する

Last updated at Posted at 2018-09-22

タイトルは、本気である。
実際 15年ほど 前から比較演算子「>」「>=」を書いていない1

比較の際には

  • 定数を左に書け
  • 注目している値を先に書け

などの流儀があることは知っている。
しかし私がここ 15年ほど愛用しているのは、以前先輩から伝授された流儀

  • <」と「<=」を使う。「>」と「>=」は使わない2

である。大小比較のために「>」や「>=」を書くことはないので、エラーにしてほしいと思っている。

&&|| との併用

inside =( 1<=x && x<=10 );
とか
outside = ( x<1 || 10<x );
のように、複数の比較演算を並べる際には小さい順に並べる。
これも、そうなっていなければエラーぐらいの気持ちで 100% そうする。

メリット - 読みやすい

書きやすさはどちらでも同じだと思うが、読みやすさには大きな差があると考えている。
数の大小関係を考えるとき、数直線で考えるとわかりやすいという人も多いと思う。
不等号の向きを「右が大きい」に制限することで(そして前項に書いたとおり、複数の比較演算の順序をきちんと制御することで)比較の式と数直線の相性が良くなる。

メリット - バグが減る

測定していないので自信はないが、比較順序にまつわるバグが減ると考えている。

x>=1 || x<=10

x<1 && x>10
のような式が間違っていることには気づきにくいと思うが、
1<=x || x<=10

x<1 && 10<x
のような式が間違っていることには気づきやすいと思う。どうだろう。

メリット - 悩みが減る

人によってはどちらが読みやすいか悩んで時間を浪費してしまうこともあるのではないかと思う。

>>= を一切使わないと決めていれば、悩みはない。
<<= のどちらを使うのかは、どちらかが正解でもう一方は不正解のことが多いので、ちゃんと悩むべきだけど。

デメリット

>>= を含んでいる式が非常に複雑であるかのように感じ、そういう式を読む能力が下がる。

実際、私の場合、両方の向きの不等号が混在した式を見るとかなりつらい気持ちになる。

導入

利用している規約になにか記載がないのであれば、勝手に導入するのがいい。
一週間から数週間で、このスタイルが正しいことを実感できると思う。

実感したら同僚にも広めるといいと思う。


  1. 他人が使うためのライブラリで比較演算を定義する場合は、書くこともある。(書かないこともある)。あと、Gemfile は仕方ないね。 

  2. 等値 (== など) と 非等値( !=, <> など )は、正直どっちでもいいと思っている。ヨーダ記法には特に賛成しない。読みやすいのはどちらなのか悩む余地が生じてしまうが、私の場合は「思いついた順」に書き、特に気にしないことにしている。 

37
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
37
17