我正在接收來自硬件的幾個位字段。使用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