2011-05-15

http://anond.hatelabo.jp/20110515104119

私、Windows屋だが、比較演算子を必ず使うように取り決めている。

if ( a.isFoo() != FALSE )
{
    // "真"のとき処理
}

if ( b.isFoo() == FALSE )
{
    // "偽"のとき処理
}

つまり、下記のように書かない

if ( a.isFoo() )
{
    // "真"のとき処理
}

if ( !b.isFoo() )
{
    // "偽"のとき処理
}

理由はむしろ"偽"を表現するときの前置される "!"への懸念。

  1. "!" を見落とすことが多い。
  2. 右から左に結合する "!" は、別の左から右へ結合する演算子と一緒に使うと、分かりづらくなるおそれがある。

要するに「バカ基準」なんだが、

速度にシビア現場じゃないので、誰でもわかることを優先している。

定演算子、シフト演算子は使わない。

他の演算子とともにインクリメント、デクリメントをしない。

こんなルールにしているのって少数派かな?

記事への反応 -
  • まぁ、タイトルの「レガシープログラマ」とは私の事なんですけどね。 最近(?)外注や自社の若いのが作ってくるプログラムに if( foo == TRUE ){ という判定文をよく見かける(fooはい...

    • 不明確な条件文になっちゃうって話だよね。主張には同意。 あと、私としては冗長な書き方をさけるという意味で、 if( foo ){ がスッキリするから好きだな。 if( foo == TRUE ){ とい...

      • 私、Windows屋だが、比較演算子を必ず使うように取り決めている。 if ( a.isFoo() != FALSE ){ // "真"のときの処理}if ( b.isFoo() == FALSE ){ // "偽"のときの処理} つまり、下記のように書かない i...

    • TRUEが定義されてる処理系だったら間違えるわけないんじゃないの?知らないけど。

    • プログラムの文脈によるが、そもそも foo が TRUE or FALSE のみしか入らない事が保証されてないのに、 TRUE とか FALSE と比較すると意図しない動作を引き起こす可能性がありうる(文脈によ...

    • C++言語 fooのintへのキャストがtrue/falseを返すというように、fooのクラス仕様が決められてるんなら、 そしてboolへのキャストが未定義だったり、また違う意味なのなら if (foo) { ではな...

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

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