为Enum值添加前缀有什么好处?

时间:2011-03-24 15:24:39

标签: vb.net enums

在此post中,Jon Skeet指出应更改以下代码以符合.NET命名约定。这样做也会减少代码中的噪音量。

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

我必须承认,我几乎像一只羊,并且正在跟随别人在我之前所做的事情。我认为前缀看起来不正确然后两次也没有意义。 在查看了几个.NET Framework示例之后,看起来这将更接近标准。

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

我是否使用这些名称? 一般的任何其他建议或意见?

5 个答案:

答案 0 :(得分:5)

我不知道标准,但在枚举和枚举值上使用Hungarian notation不是我以前见过的。

你的第二个例子更接近我通常看到的那种代码,所以在这方面,是的,它更标准。

参见this指南第8.2.3节 - pascal大小写,没有前缀/后缀。

Lance Hunt's C# coding standards第2.1节的准则16也说避免使用前缀和后缀。

我会说这是非常普遍的 - 重点是它有助于提高可读性。使用前缀和后缀会降低可读性,因此非常普遍不鼓励。

答案 1 :(得分:4)

在我工作的地方,我们也使用枚举前缀(在我们的例子中为E),我必须说我喜欢它。它使得很容易发现枚举并将其与类或变量区分开来。以下是我们的代码库中的示例:

myJob.Status = EJobStatus.Completed

在这里,我们可以很容易地看到已分配给作业的状态是枚举“EJobStatus”中的值“已完成”。

除了我个人的偏好,如果你想遵循.NET命名约定,那么枚举没有前缀。但最重要的是始终遵循给定代码库中的相同约定。

编辑:我刚刚看到你也为实际的枚举值加前缀,但我们不这样做。我们总是以这种方式引用枚举ESomeEnum.SomeValue。在这种情况下,为实际枚举值添加前缀是没有用的。另外,我认为对枚举名称和枚举值使用相同的前缀并不是一个好主意,因为它们不是一回事。

答案 2 :(得分:1)

在VB.net中,我不相信你可以引用枚举值而不用枚举的名称来表示它,所以用枚举值名称“加上”前缀是完全多余的。

即,你不能使用
          dim x = enUTDSEW_Default

即使您愿意,也必须使用:

        dim x = enUtilityTypeDetailStudentEntryWorkflow.enUTDSEW_Default

这真是太傻了。

答案 3 :(得分:0)

枚举前缀可能来自C ++程序员。在C ++中,enum名称不是值的完全限定名称的一部分:

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

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

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

但.NET语法调用第二个版本。因此冗余值名称没有任何好处。

答案 4 :(得分:0)

我在 C# 中这样做是为了避免属性名称与其(枚举)类型相同的编译器问题,我发现我过去喜欢这样做。