Estoy recibiendo varios campos de bits del hardware.¿Cuáles son los pros y los contras de usar una enumeración de banderas?
Mi código fue originalmente:
public readonly byte LowByte;
public bool Timer { get { return (LowByte & 1) == 1; } }
Entonces me acordé de la enumeración banderas y estoy considerando cambiar a:
[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; } }
y así sucesivamente.
¿Cuál es la mejor práctica y cuáles son los pros y los contras de cada enfoque?
EDIT: Me interesa saber si existen diferencias prácticas entre los dos enfoques, especialmente en lo que respecta al rendimiento. No deseo solicitar una opinión sobre los estilos de codificación (a menos que provenga de las directrices de Microsoft) ya que eso vería la pregunta cerrada como no constructiva. Gracias.
Trate de verlo desde el punto de vista del desarrollador que consume este código. Escribir pruebas unitarias es una buena manera de hacerlo; ejemplos de escritura (ejemplos de código) es otro. ¿De qué manera le permite a ese desarrollador escribir el código más claro? ¿De qué forma sería más intuitiva para el desarrollador del cliente? – TrueWill