Vb.net 在枚举值前面加前缀有什么好处吗?

Vb.net 在枚举值前面加前缀有什么好处吗?,vb.net,enums,Vb.net,Enums,在本文中,Jon Skeet指出应更改以下代码以符合.NET命名约定。这样做还可以减少代码中的噪声量 Enum enUtilityTypeDetailStudentEntryWorkflow As Integer enUTDSEW_Default = 379 enUTDSEW_ApplicantRecordBook = 380 End Enum 我必须承认,我就像一只羊,一直在追随别人在我之前所做的事情。我认为前缀看起来不正确,然后再加两次也没有意义。 在看了几个.NET Fr

在本文中,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
我用这些名字合适吗?

一般来说,还有其他建议或意见吗?

我不了解标准,但在枚举和枚举值上使用是我以前从未见过的

您的第二个示例更接近我通常看到的代码类型,因此在这方面,是的,它更标准

Enum StudentEntryWorkflow As Integer
    Default = 379
    ApplicantRecordBook = 380
End Enum
参见第8.2.3节指南-帕斯卡大小写和无前缀/后缀

的第2.1节的准则16也规定避免使用前缀和后缀


我想说,这是相当普遍的-点有枚举它来帮助可读性。使用前缀和后缀会降低可读性,因此普遍不鼓励使用。

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

myJob.Status = EJobStatus.Completed
在这里,我们可以很容易地看到,分配给作业的状态是枚举“EJobStatus”中的值“Completed”

撇开我个人的偏好不谈,如果您想遵循.NET命名约定,则枚举没有前缀。但最重要的是在给定的代码库中始终遵循相同的约定


编辑:我刚才看到您还为实际的枚举值添加前缀,但我们不这样做。我们总是这样引用枚举esomenum.SomeValue。在这种情况下,在实际枚举值前面加前缀是没有用的。另外,我认为对枚举名和枚举值使用相同的前缀不是一个好主意,因为它们不是同一件事。

在VB.net中,我不相信引用枚举值时不必在其前面加上枚举名,因此在枚举值名之前加上任何前缀都是完全多余的

例如,您不能使用
尺寸x=默认值

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

        dim x = enUtilityTypeDetailStudentEntryWorkflow.enUTDSEW_Default

这只是愚蠢。

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

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

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

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

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

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

实际上,如果将enum添加到Imports语句中,您可以直接引用enum值……我不知道这一点。谢谢不过,我想知道这是否是一种最佳实践。我怀疑没有。我也不确定这是否是一种最佳做法。向Imports语句添加Enum肯定很奇怪,但同时它可能会删除一些重复项,例如“myObject.Color=Red”而不是“myObject.Color=Colors.Red”