Frage

Wie denken Sie, ist es eine gute Idee, eine solche Enum haben:

enum AvailableSpace {
   Percent10,
   Percent20,
   SqF500,
   SqF600
}

Die Frage ist, über die Semantik der Werte Namen, das heißt sowohl Prozentsatz und Quadratfuß. Ich glaube wirklich, dass es keine gute Idee ist, aber ich konnte nicht und Richtlinien etc. zur Unterstützung dieses.

EDIT: Diese verwendet wird, um einen Zustand eines Unternehmens zu bestimmen - das heißt als ein Nur-Lese-Eigenschaft einen Zustand eines Objekts zu beschreiben. Wenn wir den gesamten Raum (das heißt das Objekt selbst weiß es) wissen, haben wir die Möglichkeit, intern zu konvertieren, so dass wir entweder nur Prozentsatz haben oder Quadratfuß, oder beides. Das Argument ist, dass „beide“ ist keine gute Idee.

Der obige ist ein Beispiel natürlich, aber das eigentliche Problem ist, dass einige Datenanbieter uns Summen senden (sq.f.) und andere Prozentsatz, und mein Ziel ist es, die Benutzeroberfläche zu vereinen. Ich bin frei, einige Annäherungen zu machen, damit die genauen Werte angepasst werden basierend auf, wie genau wir wollen die Informationen präsentieren.

Die Frage ist nur über die Semantik der Wertnamen, nicht den Inhalt - das heißt, wenn es eine gute Idee ist Prozentsatz zu setzen in einem (potentiellen) int enum

.
War es hilfreich?

Lösung

Die Antwort : Nein, es ist keine gute Idee, Aufzählungen zu verwenden, um Werte darstellen. Besonders Werte in zwei semantisch unterschiedlichen Skalen. Sie sollten nicht Aufzählungen für Werte verwenden.

Der Grund : Was ist die Beziehung zwischen den ENUM-Werte aus den beiden Skalen, wie Percent10 und SqF600? Wie sehen Sie die Liste der Werte erweitern Sie im Code darstellen können? Wie machen Sie den Vergleich und die arithmetischen Operationen auf diesen Werten?

Der Vorschlag (nicht gefragt, aber trotzdem ist es hier: -.)) : Die semantische von dem, was Sie versuchen, besser von einer Struktur reflektiert zu tun wäre, dass zwei Felder enthält - ein für absolute Fläche und einen für absolute Prozentsatz dieses Bereichs zur Verfügung. Mit einer solchen Struktur können Sie alles vertreten Sie mit den Aufzählungen oben darstellen kann. Zum Beispiel kann Daten-Provider, die Ihnen absolute Fläche geben, mit einer Struktur mit der Fläche und 100% zur Verfügung vertreten. Datenprovider, die Ihnen Prozentsatz geben, mit einer Struktur, dargestellt mit dem Prozentsatz sie eingestellt und der absoluten Fläche, so dass der Anteil dieses Bereichs ist der tatsächlich verfügbare Bereich der Datenanbieter berichten wollen. Sie erhalten „normalisiert“ Darstellung der Daten aus beiden Arten von Anbietern und Sie können einige Operatoren hinzufügen Vergleich und arithmetische Berechnungen mit Instanzen zu ermöglichen.

Andere Tipps

Wenn möglich, würde ich eher bricht Ihr Beispiel in zwei Werte, wo Ihr Enum ist „Prozent“ und „SquareFeet“ und der zweite Wert ist der quantifier. Binden Sie diese zusammen in einer Struktur.

Wenn der Kontext es zulässt, kann es noch besser sein, zwei Wrapper-Typen „Prozent“ und „SquareFeet“ zu schaffen, und dann einige Betreiber Überlastungen erstellen, so dass Sie Dinge wie „neuer SquareFeet tun können (500) + neue Prozent ( 20);“ und die Beseitigung der Verwendung von Aufzählungen.

Update: Ihr Namensschema angemessen wäre, wenn die Werte der Industrie sind anerkannte Begriffe, fast auf den Punkt, dass Symbole. Zum Beispiel ist es sicher eine ENUM zu haben, die Werte wie „ISO9001“ und nicht als zwei Werte (eine Enumeration mit „ISO“ und einem int von 9001) enthält. Es wäre auch sinnvoll sein, eine ENUM zu haben wie folgt:

public enum OperatingSystem
{
    Windows95,
    Windows98,
    Windows2000,
    WindowsXP,
    WindowsVista,
    MacOSClassic,
    MacOSXTiger,
    MacOSXLeopard
}

Wenn die Begriffe „Percentage10“ und „Sqf500“ sind nicht Bezug auf Kunst oder auch in einem spec definiert, Data Dictionary, usw., dann ist es nicht angebracht, sie als Wert in einem Enum zu verwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top