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

发布时间 2023-11-28 10:46:00作者: 被忘录

二、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