2011年11月11日金曜日

nullと比較するif文かくときに、一歩レベルあげる書き方

多くの言語で

if($hoge == null)

といった書き方をしますが、少しの工夫で後の多大な
バグ取りの時間を防げるかもしれません。

その「少しの工夫」の書き方とは下記のとおりです。

if(null == $hoge)

逆にしただけです。なぜこの書き方が良いのか説明します。


まず前提として多くの言語では
$hoge=1;
という代入が成功した場合、"true"を返す仕様になっています
※1 ためしてみたところ、PHPの$hoge=null;でもtrueがかえります。
※2 javaは代入された値そのものがかえるようです。

つまりif($hoge = null) という文が文法エラーとならず成り立ってしまいます。
たった一個=を忘れただけで全く意図しない動きになり、かつあとから修正するときも
非常に気づきにくいバグです。

ですが

if(null == $hoge)

と書くことによってたとえば

if(null = $hoge)

と書いてしまっても、nullに代入ができるわけではないので
コンパイルエラーや実行時エラーになります。よって早い段階でミスに気づけます。


この書き方の大きなメリットは上記の単純ミスに気づくというだけではなく、
いかにしてバグの起こりにくいソースを書くかという意識づけができることです。
PGやSEの大切な仕事として「いかにしてヒューマンエラーを防ぐか」がありますが
こういった些細な書き方一つがその意識向上のきっかけになつていただければ幸いです。

0 件のコメント:

コメントを投稿