Warum wird die Aufzählung von Flaggen als Zwischenfertigkeit angesehen?

8

Ich habe diesen Artikel gelesen: Entwerfen von Flags Enumerations @ msdn und es heißt

Das Kombinieren von Flags-Aufzählungswerten ist eine Zwischenkompetenz, die für Entwickler, die allgemeine Szenarien implementieren, nicht erforderlich sein sollte.

Ich finde die Aufzählung von Flaggen großartig - etwas, das ich während meiner Erfahrung mit C gelernt habe.

Warum scheint dieser Artikel Entwickler vor einer meiner Meinung nach nützlichen (und nicht komplexen) Fähigkeit zu warnen?

Rowan Freeman
quelle

Antworten:

17

Wie bei vielen Computerkonzepten fällt es denen, die sie verstehen, nicht schwer. Du bist unter diesen Leuten; Herzliche Glückwünsche!

Das ändert nichts an der Tatsache, dass bitweise Arithmetik für viele Menschen seltsam und schwer verständlich erscheint, da sie ein Sprachelement (Zahlen) verwendet, mit dem sie auf eine Weise (für die absolute Größe) auf eine ganz andere Weise (mit) umgehen unterschiedliche Bedeutungen für jedes Bit, unabhängig von ihrem 'Wert' im normalen Zahlensystem.)

Ja, es gibt Leute, für die dies schwierig ist, und ja, es gibt viele Positionen, die von Leuten besetzt werden können, die sich nicht die Mühe machen, etwas Rechnen zu lernen. Das ist es, was "Mittelstufe" hier bedeutet.

Kilian Foth
quelle
5

Der Artikel sagt

Erwägen Sie die Bereitstellung spezieller Aufzählungswerte für häufig verwendete Kombinationen von Flags.

Natürlich ist es nicht wirklich schwierig, verschiedene Flags mit dem "|" Operator, aber das Bereitstellen spezieller Aufzählungswerte hat den folgenden Vorteil:

  • leichter zu lesen:

    MyEnumeration.MyFlag1 | MyEnumeration.MyFlag2 | MyEnumeration.MyFlag3

    neigt dazu, viel länger als zu werden

    MyEnumeration.MyCombinedFlags123

  • es wird sofort klar, dass die spezifische Kombination von Flags eine legale Kombination ist (was bei jeder anderen Kombination der Fall sein kann oder nicht)

Trotzdem las ich diesen Satz aus dem Artikel nicht wie "Tu das nicht, niemals", sondern nur wie "Mach es einfacher für den allgemeinen Fall". Es gibt nichts dagegen zu sagen, keinen speziellen Aufzählungswert für eine selten verwendete Kombination zu haben.

Doc Brown
quelle