ヨーダ記法 【Yoda notation】
概要
ヨーダ記法(Yoda notation)とは、プログラミングにおける条件式の記述法の一つで、定数を左辺に置くなど一般的な順序とは逆に要素を配置すること。映画「スター・ウォーズ」シリーズに登場するヨーダというキャラクターが、一般的な英語とは語順が一部逆さまになった独特の言い回しをすることに由来する。if文などの条件式は、一般的には if( x == 1 ) のように、変数、比較演算子、定数(リテラル)の順に書くことが多い。ヨーダ記法はこの順序を逆にして if( 1 == x ) のように記述する。文法的には同じことを表しており、処理の内容に変化は生じない。
C言語やその記法を受け継ぐ多くのプログラミング言語のように、「=」が代入演算子、「==」や「===」が等価演算子であるような言語では、うっかり if( x = 1 ) と記述してしまってもエラーとはならず、「xと1を比較する」はずが「xに1を代入する」という全く異なる処理になってしまう。
このような場合、条件式をヨーダ記法で書いておけば、if( 1 = x ) となり、1にxは代入できないためエラーとなり、記述ミスにすぐ気付くことができる。リテラルが先に来ることで、動的データ型の言語で型がすぐに分かる、変数名が長い場合に比較対象が画面右に見切れてしまうことがない、などの利点もある。
しかし、人間の思考の流れとして「ある変数が指定の条件を満たすか」を式に書き表しているのであり、主体である変数が後に来るのは直感的に自然な順序とは言い難い。ヨーダ記法はコードの可読性を損なうとして批判的な人も多い。
(2023.7.12更新)