■ 2003年08月09日



一工夫でミスを防ぐ


 Washimi about etc. at 00:12

 どうもプログラムがうまく動作していないと思ったら、値の比較は == と = を重ねなければいけないのに 1 つしかなく、b に true を代入していたというケースがあります。

if (b = true) {
 ....
}

 true は真偽の真 (Yes と同義) で、本来は b が真である処理を行わせたいのです。
 if 文は真であるか、つまり == true の部分が省略できるため、true の代入された b は必ず true となり、どんな場合も処理が行われます。

 明らかにつまらないヒューマン・エラー (人的ミス) ですが、シビアな状況ほど気づきにくいものです。
 そこで以下のような一工夫で、このようなミスを防ぐことができます。

if (true == b) {
 ....
}

 単純に == の左右を入れ替えただけですが、この書き方で == を = と誤っても、true に b は代入できないためコンパイル時にエラーを指摘されます。

 というか、納期が厳しくなった客先に常駐し、ソースコードのレビュー (内容をチェックすること) を行ったのですが、危なっかしい箇所が多々あって脱力しました。
 新人くんだから仕方ないとはいえ、切羽詰っているためか社内でのフォローがなく、外部に頼る体制も、、、ということで日曜は出勤、来週は大忙し。