1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

不等式での引数の順番

Posted at

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」という不等式で書かれていた場合に、ほぼそのままの形でコーディングできる

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

まとめ

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

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

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?