Какие плюсы и минусы использования перечисления флагов?

Я получаю несколько битовых полей от оборудования.

Изначально мой код был:

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), поскольку в этом случае вопрос будет закрыт как неконструктивный. Спасибо.

7
задан Stephen Kennedy 26 October 2011 в 18:58
поделиться