¿Por qué la enumeración de banderas se considera una habilidad intermedia?

8

Estaba leyendo este artículo: Designing Flags Enumerations @ msdn y dice

La combinación de valores de enumeración de banderas es una habilidad intermedia que no debería ser necesaria para los desarrolladores que implementan escenarios comunes.

Creo que la enumeración de banderas es increíble, algo que aprendí durante mi experiencia con C.

¿Por qué parece que este artículo advierte a los desarrolladores de lo que considero una habilidad útil (y no compleja)?

Rowan Freeman
fuente

Respuestas:

17

Al igual que con muchos conceptos informáticos, quienes los entienden no los encuentran difíciles. Estás entre esas personas; ¡Felicidades!

Eso no cambia el hecho de que la aritmética bit a bit parece extraña y difícil de entender para muchas personas, ya que utiliza un elemento del lenguaje (números) que se utilizan para manejar de una manera (de magnitud absoluta) de una manera muy diferente (con diferentes significados para cada bit, independientemente de su 'valor' en el sistema numérico normal).

Sí, hay personas para quienes esto es difícil, y sí, hay muchas posiciones que pueden ser ocupadas por personas que no pueden molestarse en aprender aritmética. Eso es lo que significa "intermedio" aquí.

Kilian Foth
fuente
5

El artículo dice

Considere proporcionar valores de enumeración especiales para las combinaciones de banderas utilizadas comúnmente.

Por supuesto, no es realmente difícil combinar diferentes banderas usando el "|" operador, pero proporcionar valores de enumeración especiales tiene la siguiente ventaja:

  • Más fácil de leer:

    MyEnumeration.MyFlag1 | MyEnumeration.MyFlag2 | MyEnumeration.MyFlag3

    tiende a ser mucho más largo que

    MyEnumeration.MyCombinedFlags123

  • deja en claro de inmediato que la combinación específica de banderas es una combinación legal (que puede o no ser el caso para cualquier otra combinación)

Sin embargo, leí esta oración del artículo no como "no hagas esto, nunca jamás", solo como "hazlo más fácil para el caso común". No hay nada que decir en contra de no tener un valor de enumeración especial para una combinación raramente utilizada.

Doc Brown
fuente