[gelöst] Frage: Enum vs Option

23. Dezember 2023 10:04

Beim Sichten der BC Base Application ist mir aufgefallen, dass Microsoft den alten OPTION Datatyp an manchen Stellen durch ENUM ersetzt hat (prominentes Beispiel ist der Document Type in den Sales Tabellen), an manchen Stellen aber immer noch den OPTION Datatyp nutzt (gefunden z.B. innerhalb von Funktionen in der Customer Table).

Das machte mich ein wenig stutzig, hatte ich doch im Hinterkopf, dass OPTION eigentlich durch ENUM (mehr oder weniger) abgelöst werden soll. So rein aus dem Bauch raus würde ich ja sagen, überall dort, wo ich die Optionswerte an mehreren Stellen der Anwendung benutze, ist ENUM angebracht. Wenn die Optionswerte aber nur in einem Objekt oder gar nur in einer Funktion eingesetzt werden, wäre ENUM ziemlicher Overkill. Gibt es "Best Practices", wann man zum ENUM greift und wann OPTION die geeignetere Wahl ist?
Zuletzt geändert von DeltaTauChi am 8. März 2024 23:57, insgesamt 1-mal geändert.

Re: Frage: Enum vs Option

27. Dezember 2023 21:06

Option ist einfacher zu handhaben wenn du es nur an einer Stelle brauchst, weil du einfach im Tabellenfeld alles definierst.

Enum ist dann sinnvoller wenn du das Enum an mehreren Stellen benötigst oder es von anderen erweiterbar sein soll (also z. B. wenn die Microsoft Belegart von Partnern erweiterbar sein soll um weitere Belegarten).

Re: Frage: Enum vs Option

2. Januar 2024 09:41

ist mir aufgefallen, dass Microsoft den alten OPTION Datatyp an manchen Stellen durch ENUM ersetzt hat, an manchen Stellen aber immer noch den OPTION Datatyp nutzt

Microsoft stellt Optionen überwiegend nur auf Zuruf auf Enums um.
Wenn du den Link anklickst, bekommst du eine Idee, warum das so lange dauert: das sind sehr viele Stellen.
Mit einer einfachen Konvertierung ist es nämlich nicht getan: der aufrufende Code muss ggf. umgeschrieben werden, sodass eine Erweiterbarkeit des Enums gegeben ist - entweder mit Events oder mit Interfaces.

Gibt es "Best Practices", wann man zum ENUM greift und wann OPTION die geeignetere Wahl ist?

Option nur, wenn 1.) die Werteliste nicht erweiterbar sein soll, 2.) du die Werte nur an einer einzigen Stelle brauchst, 3.) nur wenige Werte enthalten sein sollen.
Wenn zwei Tabellenfelder dieselben Werte teilen sollen, dann spricht das bereits für ein Enum. Hat darüber hinaus den Vorteil, dass man mit "Where Used" aufs Enum auch beide Felder findet.
Läuft darum in den allermeisten Fällen auf ein Enum hinaus.
Ich weiß gar nicht, wann ich zuletzt einen Optionswert angelegt habe ... Meine Apps haben aus "historischen Gründen" noch ein paar Optionen. Das sind dann meist Prozedurparameter, die aber auch als Boolean o.ä. hätten geschrieben werden können.

Re: [gelöst] Frage: Enum vs Option

12. März 2024 11:58

Ist zwar ein wenig spät, aber ich möchte mich trotzdem bei enh und Natalie für den Input bedanken :-)