🧙

ヨーダ記法

2024/09/04に公開

if文に記述する比較文は、よく見るスタイルはこんな書き方だと思います。

if (isConnected == false) { ... }

や、

if (!isConnected) { ... }

です。
これに対して、定数を左側に書く「ヨーダ記法」というスタイルも存在します。

if (false == isConnected) { ... }

==を誤って=と記述した場合にコンパイルエラーとなるような書き方、ですね。

if (isConnected = false) { ... }  // 代入文となってコンパイルが通ってしまう

/* VS */

if (false = isConnected) { ... }  // 定数への代入はコンパイルエラーになる

ただし、if (isConnected = false)がコンパイルされるのは、isConnectedintのようなboolに暗黙的に変換されるスカラー型の場合のみです。後、コンパイルが通ったとしても、警告はされます。

ヨーダ記法は可読性に欠けるという意見もあるため、好みと相談かもしれませんが、うまく使えると良いかもしれませんね🎉

ちなみに、「ヨーダ記法」という名前になったのは、スターウォーズのヨーダが以下のような語順が逆になっている文法を使うかららしいです。

"Patience you must have, my young Padawan."(正しくは "You must have patience, my young Padawan.")

"Mourn them do not. Miss them do not."(正しくは "Do not mourn them. Do not miss them.")


|cpp記事一覧へのリンク|

Discussion