C#开发规范二(命名准则)
二、C#命名准则
1.大小写约定
(1)为了区分标识符中的单词,将标识符中每个单词的首字母大写,避免使用下划线区分。
●PascalCasing约定,用于除参数名称以外的所有标识符,将每个单词(包括长度超过两个字母的首字母缩写词)的第一个字符大写,两个字母的首字母缩写词是一种特殊情况,其中两个字母都大写,如以下标识符:IOStream。
●camelCasing约定,仅用于参数名称,第一个单词首字母小写,其他单词首字母大写,如以下参数名称:ioStream。
(2)为了实现首字母大写,大多数组合术语都被视为单个单词。
PascalCasing | camelCasing | Not |
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<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