2009-03-03

http://anond.hatelabo.jp/20090303110244

C言語の場合だが、

評価式に変数が単体で入る場合に

==を=にタイポすることがよくあり気づき難いバグになることがよくある。

if (変数 = TRUE) …

だとコンパイルエラーにならないが、

if (TRUE = 変数) …

だとコンパイルエラーになるから、バグの予防策になるっていう話だ。

Javaの場合で似てるのは、

if ("文字列".Equals(変数)) …

みたいなやつな。

変数にnullが入る場合に、ぬるぽにならない。

  • その評価式はコンパイラがWarningで拾ってくれるので、わざわざ人がやらなくてもいんじゃない?というTIPS。最近では。 好きなように書けばよいというのが今の時代での正解。 TIPS関連は...

    • そうしろってことじゃなくて、 Q何で古い人はそうなってるの?? Aコンパイルエラーを防ぐために昔やっていた名残 これで終わりなんじゃないの?

      • コンパイルエラーを防ぐためではなく、コンパイルエラーを出してバグを発生させないようにするTIPSだろjk…… あれだ、フェイルセーフってやつだね。

      • 3)何で新しい人はそうなってないの?? ↓ 4)ワーニングが出て発見できるから好きなように書けばよいというのが今の時代での正解。

      • 1)昔は if(flag = true ) をコンパイラが見つけることは出来ず、コンパイルできてしまうが故に、見つけにくいバグになるパターンだった。 2)だから、昔のSIerの人の間で true = flag と書いた...

  • どうでも良いと言えばどうでも良いんだけど Equalsって大抵、有意に遅いよ? そこまで気にするならJava自体使わない?まぁ、ごもっとも

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん