Perché l'enumerazione delle bandiere è considerata un'abilità intermedia?

8

Stavo leggendo questo articolo: Progettare le enumerazioni di bandiere @ msdn e dice

Combining flags enumeration values is an intermediate skill that should not be required for developers implementing common scenarios.

Penso che l'enumerazione delle bandiere sia fantastica - qualcosa che ho imparato durante la mia esperienza con C

Perché sembra che questo articolo stia mettendo in guardia gli sviluppatori da ciò che considero un'abilità utile (e non complessa)?

    
posta Rowan Freeman 30.04.2013 - 07:40
fonte

2 risposte

17

Come per molti concetti informatici, quelli che li comprendono non li trovano difficili. Sei tra quelle persone; Congratulazioni!

Questo non cambia il fatto che l'aritmetica bit a bit sembra strana e difficile da capire per molte persone, perché usa un elemento linguistico (numeri) che sono usati per gestire in un modo (per grandezza assoluta) in un modo molto diverso modo (con significati diversi per ogni bit, indipendentemente dal loro 'valore' nel normale sistema numerico.)

Sì, ci sono persone alle quali questo è difficile, e sì, ci sono molte posizioni che possono essere riempite da persone che non possono essere disturbate per imparare l'aritmetica dei bit. Ecco cosa significa "intermedio" qui.

    
risposta data 30.04.2013 - 08:29
fonte
5

L'articolo dice

Consider providing special enumeration values for commonly used combinations of flags.

Naturalmente, non è davvero difficile combinare bandiere diverse usando "|" operatore, ma fornire valori di enumerazione speciali presenta il seguente vantaggio:

  • più facile da leggere:

    MyEnumeration.MyFlag1 | MyEnumeration.MyFlag2 | MyEnumeration.MyFlag3

    tende ad essere molto più lungo di

    MyEnumeration.MyCombinedFlags123

  • rende immediatamente chiaro che la combinazione specifica di flag è una combinazione legale (che può essere o non potrebbe essere il caso per ogni altra combinazione)

Tuttavia, ho letto questa frase dell'articolo non come "non farlo mai, mai", solo come "rendi più semplice il caso comune". Non c'è nulla da dire contro l'assenza di un valore enum speciale per una combinazione usata raramente.

    
risposta data 30.04.2013 - 14:40
fonte

Leggi altre domande sui tag