De acuerdo con la sección de Buenas Prácticas de la documentación de MSDN para la clase System.Enum:¿Por qué los marcadores de posición, como el primero o el último, en una enumeración se consideran una mala práctica?
no definen un valor de enumeración exclusivamente para reflejar el estado de la propia enumeración. Por ejemplo, no defina una constante enumerada que simplemente marque el final de la enumeración. Si necesita determinar el último valor de la enumeración, verifique ese valor explícitamente. Además, puede realizar una comprobación de rango para la primera y última constante enumerada si todos los valores dentro del rango son válidos.
Si entiendo correctamente, no deberíamos declarar una enumeración de la siguiente manera.
public enum DrawOrder
{
VeryBottom = 0,
Bottom = 1,
Middle = 2,
Top = 3,
Lowest = VeryBottom, //marks a position in the enum
Highest = Top, //marks a position in the enum
}
¿Por qué se considera una mala práctica?
Supongo que esta es una práctica heredada de C/C++. En el mundo .NET, tenemos 'Enum.IsDefined',' Enum.GetValues', etc. por lo que el hack ya no tiene mucho sentido. –