不等式での引数の順番


if文の条件の中で不等式を使うことがよくありますが、そのときに引数をどういう順番にするのかという、所感です。

リーダブルコードでは

「制御フローを読みやすくする」で、下記のような例がでてきます。
https://www.oreilly.com/library/view/the-art-of/9781449318482/ch07.html

if (length >= 10)

or

if (10 <= length)

length >= 10 の方が良いと、リーダブルコードでは書かれています。
変数やより関心が高いものを左側(先)に書く良いともまとめられています。

これは、 「length is greater than or equal to 10」という英文とマッピングしやすくするためなのでしょう。

不等式を2つ使うとき

変数の範囲に、最大・最小があるケースです。

リーダブルコードの流儀でいくと、下記にようになります。

if (length > 10 && length < 20)

実際、こう書かれているコードもよく見かけます。
length is greater than 10 and is less than 20」とマッピングさせるなら、自然です。

2つの変数を比較する

この場合、より関心が高い方の変数を左にすることになります。どっちでもいい場合はどう書いていいのでしょう。

「今年の売上が去年の売上より大きいか」というときは、下記のようになるでしょう。

if (this_year_sales_amount > last_year_sales_amount)

不等式を数直線と対応づけるなら

不等式を視覚的に理解するために、数直線がよく使われます。高校の数学で大概の人は習うのではないでしょうか。

---10-- length --20 --->

この視覚イメージをそのままコードにすると、こうなります。

if (10 < length && length < 20)

これをルールとするなら、「小さい方を左、大きい方を右」(小 < 大) となります。
(不等式を書くときは、このようにした方がよいと、教わった覚えがあります。)

数直線と対応づけるメリット

「小さい方を左、大きい方を右」というルールは、意外と便利です。

  • 大小関係が視覚的にわかりやすい(読み間違いしにくい)
  • 変数や条件の数に左右されない(書き間違いしにくい)
  • 仕様書に「0 < x < 1」という不等式で書かれていた場合に、ほぼそのままの形でコーディングできる

小さい順に書くので、不等式の記号は < しか使いません。
なので、大小関係に限れば、読み間違いも書き間違いも、ほぼ起きないでしょう。

まとめ

極論としては、どちらでもいいかなと思います。どちらも一定のメリット・デメリットがあります。
チーム内やプロジェクト内で、どういう方針をとるかが決まっていないと、混在するとちょっと困るというところです。

数直線に対応づけたい人は、リーダブルコードのやり方はやや読みづらく思うでしょうし、逆もそうでしょう。