命名规范.NET中的枚举类型,要以Enum结尾吗?

Posted dotNET跨平台

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了命名规范.NET中的枚举类型,要以Enum结尾吗?相关的知识,希望对你有一定的参考价值。

首先要给它一个名字,然后你才能描述它。

@图片:北京的晚霞 @摄影师:刘先生

这个话题源于公司《.NET技术规范》中的一条:

【强制】枚举声明应以Enum结尾

我对此并不认同:

首先,引用一下微软官方文档中,关于枚举命名的建议:

❌ 请勿在枚举类型名称中使用“Enum”后缀。 

❌ 请勿在枚举类型名称中使用“Flag”或“Flags”后缀。 

❌ 请勿在枚举值名称上使用前缀(例如,“ad”用于 ADO 枚举,“rtf”用于富文本枚举等)。

https://learn.microsoft.com/zh-cn/dotnet/standard/design-guidelines/names-of-classes-structs-and-interfaces

可见,微软技术规范中,并不允许枚举以Enum结尾。

微软技术规范中,同样也规定了某些命名需要有特定的结尾,如Attribute,Exception,Stream,对此小伙伴们是否也感到困惑,如何确定命名是否应以某个词结尾?给代码命名是程序开发中十分重要的工作之一,优秀的开发人员绝不会随意用几个字母去命名自己的代码。

01

为什么枚举类型不以Enum结尾

首先,在.NET中,枚举和类、结构体是同一层级的概念,类和结构体都不以Class和Struct结尾,自然枚举也不应该以Enum结尾。

另外,枚举是一个包含特定数据的封闭数据集,供其他类调用,枚举命名是否以Enum结尾都不影响对其含义的理解,加上后缀反倒显得多余。

02

哪些类型应该有固定结尾

如果一个功能包含一组相关成员,成员职责明确,相互配合完成功能,那么不同成员应以其在整个功能中的作用,作为命名后缀,以使代码结构清晰,易于理解。比如,领域驱动设计中,我们一般采用MediatR提供的事件式编程模型,其主要组成类包含命令和执行两部分,因此将请求命名为xxxCommand,执行类命名为xxxHandler,代码结构清晰。再比如,我们将Service作为业务逻辑处理类后缀,将Repository作为仓储类的后缀,都是指示其所代表的特定功能。

03

总结

命名的基本原则是:“见名知意”。即命名能够恰当的反映其含义,并保持简洁。

我的思考是:

如果表示一个类型,则不需要固定后缀。

如果表示一个功能,则应该以某个特定词做后缀。

代码规范的意义在于,团队中每个人都能很容易地阅读其他人写的代码。在团队开发中,遵循一致的代码规范,能够降低程序维护成本,提高代码可用性,同时规范的制定应结合自己团队的能力,认知及个性化需要。

借用马丁.福勒的一句话:

任何人都可以编写能被机器识别的代码, 

优秀的程序员可以编写人类理解的代码。


喜欢的朋友可以点赞,转发,关注

以上是关于命名规范.NET中的枚举类型,要以Enum结尾吗?的主要内容,如果未能解决你的问题,请参考以下文章

C++中的enum枚举

java实用类总结

20165303第六周学习总结

Java开发相关命名规范

C# 枚举enum

编程规约一