3 Stimmen

Gibt es einen Vorteil, Enum-Werte voranzustellen?

In diesem Beitrag Jon Skeet wies darauf hin, dass der folgende Code geändert werden sollte, um den .NET-Namenskonventionen zu entsprechen. Dies würde auch die Menge an Rauschen im Code verringern.

Enum enUtilityTypeDetailStudentEntryWorkflow As Integer
    enUTDSEW_Default = 379
    enUTDSEW_ApplicantRecordBook = 380
End Enum

Ich muss zugeben, dass ich mich wie ein Schaf verhalten habe und dem gefolgt bin, was andere vor mir getan haben. Ich fand, dass die Vorsilbe nicht richtig aussah und dass es auch keinen Sinn machte, sie zweimal zu haben. Nachdem ich mir ein paar Beispiele für das .NET Framework angesehen habe, sieht es so aus, als ob dies eher dem Standard entsprechen würde.

Enum StudentEntryWorkflow As Integer
    Default = 379
    ApplicantRecordBook = 380
End Enum

Liege ich mit der Verwendung dieser Namen richtig?
Haben Sie noch andere Vorschläge oder allgemeine Anmerkungen?

9voto

Meta-Knight Punkte 17142

Wo ich arbeite, verwenden wir auch ein Präfix für Enums (in unserem Fall E), und ich muss sagen, dass ich es mag. Es macht es sehr einfach, eine Enum zu erkennen und sie von einer Klasse oder Variablen zu unterscheiden. Hier ist ein Beispiel aus unserer Codebasis:

myJob.Status = EJobStatus.Completed

Hier können wir leicht erkennen, dass der Status, der dem Auftrag zugewiesen wurde, der Wert "Completed" aus dem Enum "EJobStatus" ist.

Abgesehen von meiner persönlichen Vorliebe gibt es kein Präfix für Enums, wenn man den .NET-Namenskonventionen folgen will. Das Wichtigste von allem ist jedoch, dass man sich in einer bestimmten Codebasis immer an dieselben Konventionen hält.

Editar: Ich habe gerade gesehen, dass Sie auch den eigentlichen Enum-Werten ein Präfix voranstellen, das tun wir aber nicht. Wir referenzieren Enums immer auf diese Weise ESomeEnum.SomeValue. In diesem Fall ist es nicht sinnvoll, den eigentlichen Enum-Wert voranzustellen. Ich glaube auch nicht, dass es eine gute Idee ist, dasselbe Präfix für den Enum-Namen und die Enum-Werte zu verwenden, weil sie nicht dasselbe sind.

6voto

Oded Punkte 475566

Ich weiß nicht, wie es mit dem Standard aussieht, aber mit Ungarische Notation für Enums und Enum-Werte habe ich bisher noch nicht gesehen.

Ihr zweites Beispiel entspricht eher der Art von Code, die ich normalerweise sehe, also ist es in dieser Hinsicht eher Standard.

Siehe Abschnitt 8.2.3 über este Leitlinie - Pascal-Gehäuse und kein Präfix/Postfix.

Leitlinie 16 von Abschnitt 2.1 der Lance Hunts C#-Codierungsstandards sagt auch, dass Präfixe und Postfixe vermieden werden sollen.

Ich würde sagen, das ist ziemlich universell - der Sinn von Enums ist es, die Lesbarkeit zu verbessern. Die Verwendung von Präfixen und Postfixen verringert die Lesbarkeit und wird daher allgemein abgelehnt.

1voto

DarinH Punkte 4818

Ich glaube nicht, dass man in VB.net auf einen Enum-Wert verweisen kann, ohne ihm den Namen des Enums voranzustellen, so dass es völlig überflüssig ist, dem Namen des Enums etwas voranzustellen.

D.h., Sie könnten nicht verwenden
dim x = enUTDSEW_Default

selbst wenn Sie das wollten, müssten Sie es benutzen:

        dim x = enUtilityTypeDetailStudentEntryWorkflow.enUTDSEW_Default

was einfach nur dumm ist.

0voto

japreiss Punkte 10833

Das Enum-Präfix stammt wahrscheinlich von einem C++-Programmierer. In C++ wird das enum Name ist nicht Teil des voll qualifizierten Namens des Wertes:

class Class
{
public:
    enum Enum
    {
        Value1,
        Value2
    };
};

// Yes
Class::Enum e = Class::Value1

// No
Class::Enum e = Class::Enum::Value1

aber die .NET-Syntax verlangt die zweite Version. Es gibt also keinen Nutzen für einen redundanten Wertnamen.

0voto

Biraj Saha Punkte 121

Ich tue es in C#, um das Compiler-Problem zu vermeiden, dass der Eigenschaftsname derselbe ist wie der (Enum-)Typ, was ich in der Vergangenheit gerne gemacht habe.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X