我正在查看一些代码,我看到一行如下所示:
// 1 if timer is executing, else 0
private int _inTimer;
这似乎是一个二进制标志。你要么在计时器里,要么不在。
为什么要将其声明为 int 而不是 bool?
如果您最终想要添加不同的状态,我可以理解这种情况,但是我会争论使用枚举。
我能想象在这里使用的唯一原因int
- 如果不止一件事可以同时在计时器中。验证它,如果此变量不用作计数器,则立即重构此代码:)
该人可能不知道Boolean
。此外,可能跟踪的状态int
比实际评论的要多。
说了这么多,我同意,根据代码中的这些注释,我会使用 a bool
,如果需要超过 2 个状态,我会使用 a Enum
,但同样,我真的不知道你从中得到的代码库。
如果您需要int
使用bool
原子操作,例如Interlocked.CompareExchange
.
PS:我知道Interlocked.CompareExchange<T>
,但它是在 .NET 3.5 中引入的,仅支持引用类型。
如果它打算像 a 一样使用,请bool
使用 a bool
。这将使其他开发人员更容易理解其意图。整数不会阻止任何人分配高于 1 的值,并且 bool 仅限于使用true
or false
。
确实,没有理由在int
这里使用 a , a boolean
orenum
显然是更好的选择,但我不会为这么小的事情而烦恼。我敢打赌,有更多彻底的改变可以使代码更好,而不是专注于像这样的小事情。