AでもBでもないならC

  • 投稿日:
  • by



なんでもかんでもtrue/falseではありません。


たとえばある2つの状態を遷移するフラグがあるとします。



A←→B



でブーリアンの変数でfalseならA、trueならBと割り付けます。


AとBの間の遷移が外部から見てアトミックならそれでいいのですが、そうでない場合、時間的処理的に幅があるばあい、AでもBでもない状態が隠れています。


それを間抜けなことに、「処理中フラグ」などというものを導入してごまかす実装のなんと多いことか。


整数の変数をもちいて、



Aなら1


Bなら2


それ以外なら0



これで終わりです。なんでも二値で表現しようとする病気の紹介でした。


いまどきはインタフェースを抽象化するのが常識なのですから、



bool IsA();


bool IsB();


bool IsOthers();



これのプライベート変数にbool値二つ使う間抜けはそういないと思いますが。


# それがいるから世の中怖い。


if( var )やif( !var )で書きたいだけの病気ですな。