141020-Yoda

 IT業界にかかわらず、どの業界にも専門用語やその業界ならではの言葉があります。

 ネット上に「プログラミングの業界用語30選」というものが紹介されていました。私は全ての用語を知らなかったのですが、思わず「ある!ある!」と言ってしまいそうな言葉が多数載っていました。その中で「ヨーダの条件式」という言葉について下記に明記しておきます。

ヨーダの言葉

 この「ヨーダの条件式」について調べてみたところ、御存知の方も多いスターウォーズのヨーダがちょっと変わった言葉を使うことからこの言葉が生まれたそうです。それがどんな言葉なのかというと

if blue is the sky.
if tall is the man

という言葉からきているようです。確かに普通なら逆ですよね。

The sky is blue.
The man is tall

と、いった感じでしょう。

ヨーダの条件式

 通常、プログラミングなどでIF文をPHPで書いた場合

if ($num == 99) echo "No.99";

と、書くと思いますが

if (99 == $num) echo "No.99";

と書いても問題はありません。しかし、あまり書かない書き方ですよね。このような書き方のことを「ヨーダの条件式」と言うようです。

ヨーダの条件式の方が良い場合も

 私の場合、AccessでVBAを書いたあとにPHPのプログラムを書くときがあります。そんな時、ヨーダの条件式で書く癖があるとなかなか便利な場合もあります(あまり書きませんが)。例えばVBAで

If num = 99 Then Msgbox "No.99"

と書いているときにPHPで同じプログラムを書くとします(そんなことはあまりありませんが、わかりやすくするために)。そうすると上記に書いた

if ($num == 99) echo "No.99";

を書くのですが、時折、VBAの癖が出て

if ($num = 99) echo "No.99";

と書いてしまうときがあるのです(「=」が一つ足りません)。慣れている人ならわかるとおり、上記書き方でもエラーは出ません。「$numに99が入ったら真となりechoを出す」ということになるので$numに99が入ってそのまま動くのです。しかし、もちろん、その後の動作に支障が出ます。

 しかし、ヨーダの条件式で書く癖が付くと

if (99 = $num) echo "No.99";

とすると、99に$numを入れることになるのでもちろんエラーとなります。

 こんな大ボケをする人はいないかもしれませんが、簡単なヒューマンエラー防止としては有効かもしれません。「プログラムは動けばOK」と言う人からすればヨーダの条件式は「有り」なのかもしれません。しかし、きちっとしたプログラムを書く人にとっては「無し」の書き方なのかもしれません。コーティング規約が特に決まっている場合はNGかもしれませんが、そうでない場合は有りなのかな?この辺は書く人のセンスなのかもしれませんね。