(ich meine eigene Frage bin zu beantworten, so dass ich einige Dinge teilen kann ich gelernt, während Dinge auszuprobieren.)
Hier sind die Fragen, die Sie stellen sollten, um zu einer Entscheidung für Ihren speziellen Fall zu kommen:
1: Sind die Attributwerte Vorwärtsreferenzen?
Manchmal kann das Attribut V1
einen Verweis auf V2
und umgekehrt benötigen. Dies ist kein seltener Fall.Wenn Sie mit solch einem enum
umgehen, würde Ansatz 1 einfach nicht funktionieren. Der Compiler wird sich (zu Recht) über illegale Vorwärtsreferenzen beschweren. Jeder der anderen zwei Ansätze kann verwendet werden.
Jetzt, wenn der Attributwert teuer zu berechnen ist und eine Konstante, möchten Sie, dass es nur einmal berechnet wird. Bei Ansatz 2 müssten Sie lokale Variablen pro Aufzählungswert einführen und die Ergebnisse dort zwischenspeichern. Dies ist ausführlich, bietet Ihnen jedoch eine bessere Leistung. Bei Ansatz 3 werden die Ergebnisse ohnehin nur einmal berechnet und müssen daher keine zusätzliche Arbeit leisten. Dies ist lesbarer, aber etwas weniger performant als Ansatz 2. Design zwischen diesen gemäß den spezifischen Kompromissen, die in Ihrem Fall gerechtfertigt sind.
2: Muss ich Ergebnisse zwischenspeichern?
Siehe den zweiten Absatz der vorherigen Aufzählung.
Wenn keine Vorwärtsreferenzen vorhanden sind, können Sie auch Ansatz 1 verwenden. Aber wenn die Berechnung bei der Berechnung von Attributen komplex ist, sind Sie besser mit einem der beiden anderen Ansätze.
3: Sind die Attribute für alle Enum-Werte relevant?
Wenn nicht, dann sollten Sie logischerweise einen Map
hier verwenden. Das heißt, Ansatz 3.
4: Gibt es für einige Enum-Werte irgendwelche Standardwerte für einige Attribute?
Wenn ja, können Sie alle drei Ansätze verwenden, und alle bieten unterschiedliche Kompromisse an.
Mit Ansatz 1: Sie würden einen Hilfskonstruktor definieren, der das Attribut auf den Standardwert initialisiert. Wenn mehrere solcher Attribute vorhanden sind, ist dies möglicherweise kein praktikabler Ansatz.
Mit Ansatz 2: Dies wird tatsächlich wie "vierte" Ansatz Peter Lawrey oben vorgeschlagen. Sie haben eine Methode, die den Standardwert in enum
Hauptkörper zurückgibt. Und einige Aufzählungswerte überschreiben diese Methode, um einen anderen Wert zurückzugeben. Dies ist wiederum ziemlich ausführlich.
Mit Ansatz 3: Nur weniger effizient. Gut in jeder anderen Art und Weise.
Ich denke, Sie sollten zuerst erklären, wie sie sich beziehen ('Eenum' und' A'). –
@BheshGurung, das sind nur einige zufällig ausgewählte Namen. 'A' ist ein zufälliger Typ. Wenn sie in irgendeiner Weise verwandt wären, würde ich dies ausdrücklich angeben. – missingfaktor
Ich frage mich, wer zum Schließen gewählt und warum. – missingfaktor