なんでもかんでも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 )で書きたいだけの病気ですな。
コメント