我正在接收来自硬件的几个位字段。使用flags枚举有什么优点和缺点?
我的代码最初是:
public readonly byte LowByte;
public bool Timer { get { return (LowByte & 1) == 1; } }
然后我想起这些标志枚举,并正在考虑将其更改为:
[Flags]
public enum LowByteReasonValues : byte
{
Timer = 1,
DistanceTravelledExceeded = 2,
Polled = 4,
GeofenceEvent = 8,
PanicSwitchActivated = 16,
ExternalInputEvent = 32,
JourneyStart = 64,
JourneyStop = 128
}
public readonly LowByteReasonValues LowByte;
public bool Timer { get { return (LowByte & LowByteReasonValues.Timer) == LowByteReasonValues.Timer; } }
等。
哪个是最佳实践,以及每种方法的优缺点?
编辑:我很想知道这两种方法之间是否存在实际差异,特别是在性能方面。我不希望征求关于编码风格的意见(除非它来自Microsoft指导方针),因为这会将问题视为无法构建的问题。谢谢。
尝试从使用此代码的开发人员的角度来看待它。编写单元测试是一个很好的方法,编写示例(代码示例)是另一个示例。哪种方式可以让开发人员编写最清晰的代码?哪种方式对于客户端开发人员来说最直观? – TrueWill