Vb.net 在枚举值前面加前缀有什么好处吗?
在本文中,Jon Skeet指出应更改以下代码以符合.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
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”