BLOGブログ

  • このエントリーをはてなブックマークに追加

ヨーダ記法 とスターウォーズの関係

もうすぐスターウォーズ公開されますね。
公開されるスターウォーズとは無関係ですが、条件文の記述の仕方でヨーダ記法というものがあります。

ヨーダ記法はプログラムの記述誤りを防ぐ書き方です。
最近はIDEが進歩したので、この書き方をする方やプロジェクトのコーディングルールに適用されることはないと思いますが、豆知識的に説明します。

普通変数の値が、この値かをチェックするとき、左辺に変数、右辺に比較したい固定値を記述します。

当然、結果は「Value is not 10」
でも、うっかり下記のように条件式を「a = 10」って書いたらどうでしょう?

javascript だと if文の条件式に代入分を書けるのでエラーとならずに、「Value is 10」となってしまいます。

そこで、ヨーダ記法
if 文内の 左辺を右辺を入れ替えると……。

「Uncaught ReferenceError: Invalid left-hand side in assignment」
割当無効な左辺だよ、とエラーを教えてくれます。

もちろん
if (10 == a)と記述すれば正しく動作します。

実際、ヨーダ記述で恩恵を受けられるのは、C、C+、PHP、javascriptみたいです。
(javaやC#は、if文内での代入ができません)
rubyは、実行できるが本当に代入?っと警告がでる仕様
「-e:1: warning: found = in conditional, should be ==」

左辺に変数がある条件式を当然のように目にしているので、ヨーダ記述は、とても違和感があります。
ただ、CやC+でコーディングして、IDEも機能が少ない時代の良い知恵だと思います。

今は、そんなコード記述をすることはないと思いますが、ネタ的(スターウォーズが公開されるんで)に書きました。
ではでは。

ランキング

最近の投稿

アーカイブ

カテゴリー

RSS