2009-03-04

http://anond.hatelabo.jp/20090303113049

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

2)だから、昔のSIerの人の間で true = flag と書いたら?という宗教流行った。

3)そのころプログラマは、だったら、コンパイラを改造すればいんじゃね?とgccを改造してコミットしてワーニングを出すようにした。

4) true == flag でも flag == true でも 好きなように書けるようになった。

記事への反応 -
  • C言語の場合だが、 評価式に変数が単体で入る場合に ==を=にタイポすることがよくあり気づき難いバグになることがよくある。 if (変数 = TRUE) … だとコンパイルエラーにならないが、 i...

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

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

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

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

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

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

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

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