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

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

cc775bf9559e8019a15570c22c19c5f3.jpeg

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

这个话题源于公司《.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

总结

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

我的思考是:

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

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

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

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

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

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


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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/279963.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

macos安全性偏好设置_如何更改macOS系统偏好设置的布局

macos安全性偏好设置If you don’t care for the way the System Preferences appear in macOS, you can change them by hiding certain preference panels or by rearranging them alphabetically. 如果您不喜欢系统偏好设置在macOS中的显示方式,则可以通过隐藏某…

机器视觉技术在表面缺陷检测方面的发展趋势

导读:机器视觉技术在表面缺陷检测方面的发展趋势如何?很多人都不了解,据悉,目前工业中应用的机器视觉检测绝大部分执行的是二维检测任务,三维机器视觉检测仍处于理论研究和试验阶段。除此之外,机器视觉检测…

J.U.C之AQS

AQS是J.U.C的核心 AQS(AbstractQueuedSynchronizer)队列同步器,AQS是JDK下提供的一套用于实现基于FIFO等待队列的阻塞锁和相关的同步器的一个同步框架。 同步器面向的是锁的实现者,它简化了锁的实现方式,屏蔽了同步状态管理、线程的排队、等待…

.NET周报【12月第3期 2022-12-23】

由于众所周知的原因,大佬们纷纷加入羊群,笔者也未能幸免,体验下来这绝对不是普通感冒的症状,身体不适,熬了几天,所以本周更新比较晚;另外精力有限,对于国际板块只有链接没有简介&…

亚马逊的vps多少钱一个月_如何查看您在亚马逊上花了多少钱

亚马逊的vps多少钱一个月Have you ever wondered how much you’ve spent at Amazon during your lifetime? Whether you’re feeling curious or just plain brave, there’s an easy way to find out. 您是否想过一生在亚马逊上花了多少钱? 无论您是好奇还是勇敢…

JavaScript-client、offset、scroll、定时器

client offset scroll client、offset、scroll系列 他们的作用主要与计算盒模型,盒子的偏移量和滚动有关 clientTop 内容区域到边框顶部的距离, 说白了, 就是边框的高度 clientLeft 内容区域到边框左部的距离, 说白了&#xff0…

在ASP.Net和IIS中删除不必要的HTTP响应头

引入 每次当浏览器向Web服务器发起一个请求的时,都会伴随着一些HTTP头的发送.而这些HTTP头是用于给Web服务器提供一些额外信息以便于处理请求。比如说吧。如果浏览器支持压缩功能,则浏览器会发送Accept-Encoding HTTP头,这样一来服务器便知道…

springboot + mybatis + gradle项目构建过程

1.从Spring boot官网根据需求下载脚手架或者到GitHub上去搜索对应的脚手架项目,D_iao ^0^ • 文件目录如下(此处generatorConfig.xml 和 log4j2.xml文件请忽略,后续会讲解) 2.使用Mybatis代码自动构建插件生成代码 • gradle 相关配置 // My…

基于间隔推送全量更新数据状态的设计方法

2019独角兽企业重金招聘Python工程师标准>>> 假如有个直播间,在数据有更新的时候,能及时反映在客户端上。通信方式来说,有两种: 1、拉取模式。 2、推送拉取模式(或者纯推送) 拉取模式&#xff0…

京东Vue组件库NutUI 2.0发布:将支持跨平台!

NutUI 是一套来自京东用户体验设计部(JDC)前端开发部的移动端 Vue 组件库,NutUI 1.0 版本于 2018 年发布。据不完全统计,目前在京东至少有30多个 web 项目正在使用 NutUI。 经过一段时间紧锣密鼓的开发,近期&#xff0…

macbook 下载时睡眠_MacBook进入睡眠状态时如何自动使其静音

macbook 下载时睡眠You open your MacBook to take notes in class or during a meeting, and your music starts playing. Loudly. Not only did you disrupt everyone, you also revealed your passion for 90’s boy bands to a room full of people who once respected you…

Mac 的mysql5.7没有配置文件,如何解决only_full_group_by 问题

数据库版本是5.7.19,在写语句的时候,只要涉及ORDER BY,就会报错, ERROR 1055 (42000): Expression #7 of SELECT list is not in GROUP BY clause and contains nonaggregated column postscan.verifyDelayLog.auditor which is not function…

Spring MVC 入门(一)

什么是 Spring MVC 学习某一样东西之前,我们一定要大致知道这个东西是什么,能干什么,为什么要用它。 Spring MVC 是一个开源平台,一个基于 Spring 的 MVC 框架,它支持基于 Java 开发 Web 应用程序。MVC 架构很利于开发…

开源网关 Apache APISIX 认证鉴权精细化实战讲解

关注公众号并添加到“星标⭐”,防止错过消息后台回复【资料包】获取学习资料GitOps 新手入门到专家进阶实战详细教程作者钱勇,API7.ai 开发工程师,Apache APISIX Committer在当下云原生越发成熟的环境下,API 网关最核心的功能可以…

python应用POP3、IMAP、SMTP 协议,获取邮箱验证码

POP3和IMAP是邮件相关的协议,IMAP是比POP3更高级一点的协议,实…

固件中启用的虚拟化否_哪些固件或硬件机制可启用强制关机?

固件中启用的虚拟化否At one time or another, all of us have had to force our computers to shut down by pushing and holding the power button down until they powered off. Is this mechanism hardware-based, firmware-based, or both? Today’s SuperUser Q&A p…

.NET 云原生架构师训练营(基于 OP Storming 和 Actor 的大型分布式架构二)--学习笔记...

▲ 点击上方“DotNet NB”关注公众号回复“1”获取开发者路线图学习分享 丨作者 / 郑 子 铭 这是DotNet NB 公众号的第202篇原创文章目录为什么我们用 OrleansDapr VS OrleansActor 模型Orleans 的核心概念结合 OP Storming 的实践结合 OP Storming 的实践业务模型设计模型代…

PHP 多维数组转json对象

PHP 多维数组转json对象 php 数组转json对象&#xff0c;可能大家都知道要用json_encode,但是转换出来的格式多有不同&#xff0c;此处做个小小的记录&#xff01; 1. 一维数组转json对象 <?php $arr_1 [one, two, three]; var_dump(json_encode($arr_1)); $arr_2 [0 >…

微软文本检索_如何在Microsoft Word中引用其他文档中的文本

微软文本检索You probably have some text that you type often in your Word documents, such as addresses. Instead of retyping this text every time you need it, you can put this common text into one Word document and reference it in other documents–it’ll eve…

Hadoop-Flume-类比吸尘器图解

2019独角兽企业重金招聘Python工程师标准>>> 这是我自己理解Hadoop-Flume的方式 转载于:https://my.oschina.net/u/3697442/blog/1560613