首页 > 编程语言 >C#开发规范二(命名准则)

C#开发规范二(命名准则)

时间:2023-11-28 10:57:19浏览次数:27  
标签:短语 C# 准则 后缀 添加 名称 使用 命名

二、C#命名准则

1.大小写约定

(1)为了区分标识符中的单词,将标识符中每个单词的首字母大写,避免使用下划线区分。

●PascalCasing约定,用于除参数名称以外的所有标识符,将每个单词(包括长度超过两个字母的首字母缩写词)的第一个字符大写,两个字母的首字母缩写词是一种特殊情况,其中两个字母都大写,如以下标识符:IOStream。

●camelCasing约定,仅用于参数名称,第一个单词首字母小写,其他单词首字母大写,如以下参数名称:ioStream。

(2)为了实现首字母大写,大多数组合术语都被视为单个单词。

PascalCasing camelCasing Not
Email email EMail
Endpoint endpoint EndPoint
FileName fileName Filename
Gridline gridline GridLine
Hashtable hashtable HashTable
Id id ID
Ok ok OK
UserName userName Username
Multiview multiview MultiView

2.通用命名约定

(1)选择易读的标识符名称

(2)可读性比简洁性更重要

(3)不要使用下划线、连字符或任何其他非字母数字字符

(4)避免使用与广泛应用编程语言关键字冲突的标识符

(5)不使用未被广泛接受的首字母缩写词,仅在必要时使用。

3.程序集和DLL的名称

程序集是托管代码程序的部署和标识单位,尽管程序集可跨一个或多个文件,但通常程序集和DLL一对一映射。

(1)为程序集DLL使用大量功能的名称

(2)考虑<Company>.<Component>.dll模式命名,<Component>包含一个或多个以句点分隔的子句。

4.命名空间的名称

(1)在命名空间名称前加上公司名称,以防不同公司的命名空间具有相同名称。

(2)在命名空间名称第二层使用稳定的、与版本无关的产品名称。

(3)不要使用组织层次结构作为命名空间层次结构中名称的主要部分。

(4)使用PascalCasing,并使用句点分隔命名空间组件。

(5)在适当情况下使用复数命名空间名称。

(6)不要对命名空间和该命名空间中的成员使用相同的名称。

(7)不要引入泛型类型名称,如Element、Node、Log、Message

5.类、结构和接口的名称

(1)使用PascalCasing用名词或名词短语命名类(抽象类)和结构(方法使用动词短语)

(2)使用形容词短语命名接口

(3)不要在类名前添加前缀,如“C”。

(4)考虑以基类名称作为派生类名称的结尾。

(5)必须在接口名称前加“I”,表示该类型为接口。

(6)在命名类型派生自或实现某些 .NET Framework 类型时,请务必遵循下表中描述的准则。

System.Attribute 必须将后缀“Attribute”添加到自定义属性类的名称中。
System.Delegate

●必须将后缀“EventHandler”添加到事件中使用的委托名称。

●必须将后缀“Callback”添加到委托名称中,而不是用作事件处理程序的名称。

●不要将后缀“Delegate”添加到委托。

System.EventArgs ●必须添加后缀“EventArgs”。
System.Enum

●不要派生此类。

●不要添加后缀“Enum”或“Flag”。

●不要在枚举值名称使用前缀

System.Exception ●必须添加后缀“Exception”

IDictionary

IDictionary<TKey,TValue>

●必须添加后缀“Dictionary”

IEnumerable

ICollection

IList

IEnumerable<T>

ICollection<T>

IList<T>

●必须添加后缀Collection
System.IO.Stream ●必须添加后缀“Stream”

CodeAccessPermission

IPermission

●必须添加后缀“Permission”

6.类型成员的名称

(1)方法的名称使用动词或动词短语、谓词或谓词短语。

(2)属性名称使用名词、名词性短语或形容词性名称。

(3)属性名词不要使用“Get”前缀。

(4)用描述集合中项目的复数短语为集合属性命名,不要使用单数短语后接“List”或“Collection”。

(5)布尔属性使用肯定性短语(CanSeek而非CantSeek)命名,也可使用“Is”、“Can”、“Has”,根据使用场景而定。

(6)考虑为属性提供与其类型相同的名称。

7.事件的名称

事件始终指操作,可以是即将发生的,也可以是已经发生的。 因此,对于方法,事件用谓词命名,并用谓词时态指示引发事件的时间。

(1)用谓词或谓词短语为事件命名。

(2)使用现在时和过去时,为事件名称赋予之前和之后的概念。

例如,在窗口关闭前引发的关闭事件可命名为 Closing,而在窗口关闭后后引发的关闭事件可命名为 Closed

(3)不要使用“Before”或“After”前缀或后缀指示发生事件前后。

(4)为事件处理程序(用作事件类型的委托)添加“EventHandler”后缀。参数“sender”类型始终为“object”,参数e类型添加“EventArgs”后缀。

8.字段的名称

(1)使用PascalCasing。

(2)使用名词、名词性短语或形容词。

(3)不要在字段中使用前缀,如“s_”。

文章来源于微软官方文档https://learn.microsoft.com/zh-cn/dotnet/standard/design-guidelines/naming-guidelines

标签:短语,C#,准则,后缀,添加,名称,使用,命名
From: https://www.cnblogs.com/lskFighting/p/17859624.html

相关文章

  • oracle查询用户的权限
    DBA_*描述的是数据库中的所有对象ALL_*描述的是当前用户有访问权限的所有对象USER_*描述的是当前用户所拥有的所有对象 查看所有用户: select*fromdba_users;  --->显示所有用户的详细信息select*fromall_users; ......
  • 如何实现CRM销售流程自动化?
     销售业绩是衡量企业经营的重要指标,也是销售人员一直要达成的目标。销售业绩能否提高取决于销售人员的能力、客户服务水平,还需要借助有效的工具。CRM系统就是这样的一款软件。企业如何提高销售业绩?不妨试试CRM销售流程自动化。CRM如何实现销售流程自动化?数据自动化:CRM可以通......
  • Uboot顶层Makefile解析-1. defconfig过程分析
    1版本号TopMakefile的开头会有版本描述,VERSION是主版本号,PATCHLEVEL是补丁版本号,SUBLEVEL是次版本号,这三个一起构成了uboot的版本号,比如当前的uboot版本号就是“2016.03”。EXTRAVERSION是附加版本信息,NAME是和名字有关的,一般不使用这两个。2MAKEFLAGS有两个特......
  • CRM系统是如何对销售线索进行管理的?
     什么是销售线索?销售线索就是指那些有购买意向的潜在客户。销售线索有多种来源,例如官网表单、转介绍、市场活动等。科学地管理销售线索可以提高线索转化率,为企业创造更多地价值。下面说说,CRM系统如何进行线索管理?线索获取:CRM可以通过各种渠道,如网页表单、名片导入、在线聊天......
  • docker部署halo
    一、docker dockerpullhalohub/halo:1.5.4dockerrun-it-d--namehalo-p8090:8090-v~/.halo:/root/.halo--restart=unless-stoppedhalohub/halo:1.5.4 二、docker-composeversion:'3'services:halohub:hostname:halohubimage:halo......
  • 什么是kafka中topic、分区、副本、偏移量、消息保留策略
    Kafka是一个开源的分布式流式数据平台,也成为分布式消息队列。用于高吞吐量、低延迟的数据发布和订阅。 1、什么是topic(主题)? 在Kafka中,Topic(主题)是数据发布和订阅的基本单位,它代表了相同类型的消息流。 一个Topic可以看作是一个逻辑上的数据流管道,消息的生产者(Prod......
  • C++获取机器启动至今的时长和机器启动的时间戳
    根据当前时间戳与机器启动至今的时间长度相减,可以精确计算出机器启动时刻的时间戳epochtime代码#include<iostream>#include<stdio.h>#include<time.h>#include<chrono>intmain(){#ifdef__linux //linuxonly std::cout<<"===linuxonlytimeanalysis==......
  • 文心一言 VS 讯飞星火 VS chatgpt (145)-- 算法导论12.1 5题
    五、用go语言,因为在基于比较的排序模型中,完成n个元素的排序,其最坏情况下需要Ω(nlgn)时间。试证明:任何基于比较的算法从n个元素的任意序列中构造一棵二又搜索树,其最坏情况下需要Ω(nlgn)的时间。我个人喜欢灵小智。文心一言:首先,我们要明白二叉搜索树(BST)的性质:每个节点......
  • Oracle 数据库表空间运维
    --https://blog.csdn.net/hanjianahanjian/article/details/83871567--1、block:是Oracle中存储数据块的最小单位,所以数据最终都是存储在block中。它也被称为逻辑blocks或是页(pages)。每个操作系统都有自己的blocksize。而这里的block是Oracle自己的,不同2于2、extent:OS的blocks......
  • 【git】pycharm上推送代码到云仓
    1、pycharm中安装插件,并且重启2、出现shareprojectongitee,如果是初识提交,会有addfilesforinitialcommit修改代码后,提交......