コードを見ていると、次のような行が表示されます。
// 1 if timer is executing, else 0
private int _inTimer;
これはバイナリ フラグのようです。あなたはタイマーの中にいるか、そうでないかのどちらかです。
これを bool ではなく int として宣言したいのはなぜですか?
最終的に別の状態を追加したい場合は、シナリオを理解できますが、列挙型を使用すると主張します。
ここで使用することを想像できる唯一の理由int
-一度に複数のものがタイマーに入る可能性がある場合。それを確認し、この変数がカウンターとして使用されていない場合は、このコードをすぐにリファクタリングしてください:)
その人は について知らなかったかもしれませんBoolean
。int
また、実際にコメントされているよりも多くの州が追跡されている可能性があります。
そうは言っても、コード内のコメントに基づいて、私は を使用しbool
、2 つ以上の状態が必要な場合はを使用していたことに同意しますEnum
が、繰り返しますが、の実装の詳細はよくわかりません。あなたがそれを手に入れたコードベース。
などのアトミック操作を使用する必要がある場合は、int
代わりにを使用することをお勧めします。bool
Interlocked.CompareExchange
PS: については知ってInterlocked.CompareExchange<T>
いますが、.NET 3.5 で導入され、参照型のみをサポートしています。
のようbool
に使用する場合は、 を使用しbool
ます。他の開発者が意図を理解しやすくなります。整数は、1 より大きい値を代入することから誰も遠ざけることはなく、bool はtrue
orのみを使用するように制限されていfalse
ます。
int
確かに、ここでan を使用する理由はありません。明らかにより良い選択はa boolean
orですが、私はそのような小さなことを気にしません。enum
このような小さなことに焦点を当てるのではなく、コードを改善できる抜本的な変更がもっとあるはずです。