Ist es eine gute Übung, enum als int zu verwenden?

7

Also, ich habe eine Variable "state" in einer Klasse. Ich möchte es als Integer deklarieren, damit ich einige if-Anweisungen speichern kann.

%Vor%

Eine Möglichkeit besteht darin, einen enum-Status {Eins = 0, Zwei = 1, Drei = 3} zu deklarieren und dann in der switch-Anweisung:

%Vor%

Also, ist es eine gute Praxis, enum so zu benutzen? Gibt es einen besseren Weg, dies zu tun?

Danke!

    
Snowfish 10.02.2011, 21:38
quelle

3 Antworten

12

Ja, das ist ein guter Weg, es zu tun. In der Regel verwenden Sie enums , um das Leben einfacher zu machen, viele andere Zahlen, die anderen Codern nichts wirklich sagen, sind nicht sehr hilfreich.

Das ist also eine sehr gute Art, es zu benutzen, es macht Ihren Code lesbar und verständlich.

Auch wenn @James McNellis darauf hingewiesen hat, ist die Benennung von Enums wie "1,2,3,4" eine schlechte Idee, da es nicht ausdrückt, was es wirklich tut.

Aber ich vermute, das war nur ein Beispiel von Ihrer Seite.

Betrachten Sie dies stattdessen:

%Vor%

In diesem Fall ist die "Operation" entweder: Warten, Laufen oder Beendet, was es lesbar und verständlich macht. Betrachten Sie nun den Weg ohne Enums:

%Vor%

Was sagt dir 997? Absolut Nichts ! Verwenden Sie lesbaren und verständlichen Code, um jedermann das Leben zu erleichtern.

    
Filip Ekberg 10.02.2011, 21:40
quelle
7

Der gesamte Code, den Sie oben haben, funktioniert genauso gut, wenn Sie state als State und nicht als int deklariert haben. Sie können es in einer switch-Anweisung verwenden, ihm neue Werte zuweisen, Vergleiche mit ihm anstellen usw. Es gibt wirklich keine Vorteile, ein int hier zu verwenden, da das im Wesentlichen "im Quellcode liegt". Ihre Variable ist keine ganze Zahl. Es macht keinen Sinn, es mit einem Wert zu multiplizieren oder zu dividieren oder es nach links oder rechts zu verschieben. Wenn Sie die Variable als State markieren, wird deutlicher, dass Sie wirklich einen von mehreren Werten halten und Sie daran gehindert werden, einige der oben genannten Fehler zu machen. Plus, es gibt dem Compiler eine bessere Chance, solche Dinge zu diagnostizieren:

%Vor%

Verwenden Sie im Allgemeinen das Typsystem zu Ihrem Vorteil. Wenn es ein int ist, mach es zu einem int . Wenn es sich um einen Aufzählungstyp handelt, machen Sie es zu einem Aufzählungstyp.

    
templatetypedef 10.02.2011 21:42
quelle
0

Das Verwenden von lesbaren Zustandsnamen in einer switch-Anweisung anstelle von Zahlen scheint mir gut zu sein. Und ich denke nicht, dass dies auch die Performance beeinflussen wird.

Also keinen Grund, keine Enums zu verwenden!

    
Veger 10.02.2011 21:41
quelle

Tags und Links