Ich mache gerade ein Projekt. In diesem Projekt haben viele Objekte eine ID, die verwendet wird, um die Eigenschaften und das Verhalten einer Entität aus den Konfigurationsdateien in verschiedenen Codeteilen abzurufen.
Ich verwende String als ID, das passt gut zu mir, aber es gibt einige Probleme:
Die Tippfehler sind nicht leicht zu finden;
Es gibt keine Codevervollständigung, also muss ich mir alle IDs merken
Ich denke daran, eine Aufzählungsstruktur als Objekt-ID zu verwenden. Dies sollte all diese Probleme lösen. Ich möchte wissen, gibt es irgendwelche Fallstricke bei der Verwendung von enum als Entitätsidentifikator?
Es gibt einige Fallstricke bei der Verwendung von Aufzählungen als IDs:
==
, Sie müssen entweder switch
oder a.equals(b)
oder verwendenType.enumEq(a,b)
IMHO besteht der Hauptfall neben diesen darin, dass sich die Aufzählungsdarstellung ändern kann, wenn Sie Aufzählungselemente hinzufügen, da ihre Darstellung ihren Index in der Aufzählung enthält.
Wenn Sie also Ihren Code von enum ID { Foo; Bar }
auf aktualisieren enum ID { Zero; Foo; Bar; }
, werden die Indizes der Foo- und Bar-Werte geändert, was möglicherweise zu unerwartetem Verhalten führt.
Dies ist ein wichtiges Problem, wenn Sie diese Werte serialisieren und speichern möchten.
Ich denke, Ihre beste Option wäre die Verwendung @:enum abstract
gemäß https://haxe.org/manual/types-abstract-enum.html
Auf diese Weise erhalten Sie das Beste aus beiden Welten: Ihre IDs sind tatsächliche Laufzeitstrings, aber der Compiler weiß, welche Werte erwartet werden, und Sie erhalten eine strenge Typisierung.
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen