Diese Diskussion geht es um einen Namen Standardwert: C#: Should the default value of an enum be None or Unknown?C++ Standard-Enumerationswert Nutzung
jedoch große Menge von Menschen, die ich mit vor kurzem als Standard-ENUM-Werten schädlich, unnötig und potenziell führen zu einer schlechten Praxis gesprochen.
Als Beispiel ist folgendes zu beachten:
enum eJobStates
{
JOB_STATE_INITIALISING,
JOB_STATE_PROCESSING,
JOB_STATE_DONE
};
es keinen Sinn für einen Job machen würde in etwa JOB_STATE_UNKNOWN zu sein, aber man kann sich vorstellen, dass jede Struktur, die für die Überwachung verwendet werden könnten, der Arbeitsplätze könnte Verwenden Sie einen solchen Wert.
Gibt es Best Practices/Faustregeln bezüglich der Erstellung eines Standardwerts beim Definieren einer Enumeration? Sollten sie wann immer möglich um jeden Preis vermieden werden?
Nun, kann Ihre Überwachungsklasse die Enumeration erweitern, indem Sie einen MONITORING_STATE-Wert hinzufügen? – dchhetri
Ich könnte den Vorschlag nicht vollständig verstehen. In diesem speziellen Beispiel würde MONITORING_STATE aus der Jobperspektive immer noch nicht viel Sinn ergeben und, wie in [link] (http://stackoverflow.com/questions/1804840/extending-enums-in-c) angegeben, kann ich die enum in der Überwachungsklasse (die idealerweise eJobStates als private Variable verwendet). – ellimilial
Ja, mir ist klar, dass man Enums natürlich nicht verlängern kann. monitoring_state war nur ein Name, aber Sie könnten definitiv job_state_unknown verwenden. Was ich vorgeschlagen habe, war, zusätzliche Enum in der Überwachungsklasse hinzuzufügen. Sie können dies tun, indem Sie den letzten Enum-Wert von eJobStates übernehmen und ihm 1 hinzufügen und ihn zum Anfangswert des Enum-Status für die Überwachungsklasse machen. Schließlich vergleichen Sie mit enums nur Ints, die Zustände darstellen. Wenn Sie etwas Konkreteres möchten, können Sie, wie in der Verknüpfung vorgeschlagen, entweder eine Enum-Klasse erstellen oder für jeden Zustand ein Zustandsobjekt erstellen. – dchhetri