《《名称准则》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《名称准则》PPT课件.ppt(40页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、湖南文理学院计算机学院湖南文理学院计算机学院屠添翼屠添翼 本讲内容本讲内容大小写约定大小写约定程序集和程序集和 DLL 的名称的名称 通用命名约定通用命名约定 网络编程名称准则名称准则 13命名空间的名称命名空间的名称 类、结构和接口的名称类、结构和接口的名称 类型成员的名称类型成员的名称 参数名参数名 资源的名称资源的名称 vv统一名称准则,熟悉公共语言运行库统一名称准则,熟悉公共语言运行库 (CLR)(CLR)名称准则。名称准则。教学目标教学重点教学难点vv对众多名称准则的理解对众多名称准则的理解vv大小写约定大小写约定 为什么要学习名称准则为什么要学习名称准则vv对于组成类库的元素(包括
2、程序集、命名空间、类型、成员对于组成类库的元素(包括程序集、命名空间、类型、成员对于组成类库的元素(包括程序集、命名空间、类型、成员对于组成类库的元素(包括程序集、命名空间、类型、成员和参数),命名准则提供如何为这些元素选择合适的标识符和参数),命名准则提供如何为这些元素选择合适的标识符和参数),命名准则提供如何为这些元素选择合适的标识符和参数),命名准则提供如何为这些元素选择合适的标识符的准则。选择符合这些准则的标识符可以提高您的库的可用的准则。选择符合这些准则的标识符可以提高您的库的可用的准则。选择符合这些准则的标识符可以提高您的库的可用的准则。选择符合这些准则的标识符可以提高您的库的可用
3、性,并使用户相信您的库将不需要学习一组新的规则。性,并使用户相信您的库将不需要学习一组新的规则。性,并使用户相信您的库将不需要学习一组新的规则。性,并使用户相信您的库将不需要学习一组新的规则。vv为了提供一致的开发人员体验,公共公开的元素(如公共类为了提供一致的开发人员体验,公共公开的元素(如公共类为了提供一致的开发人员体验,公共公开的元素(如公共类为了提供一致的开发人员体验,公共公开的元素(如公共类和受保护的方法)必须遵守这些准则。然而,为在整个代码和受保护的方法)必须遵守这些准则。然而,为在整个代码和受保护的方法)必须遵守这些准则。然而,为在整个代码和受保护的方法)必须遵守这些准则。然而,
4、为在整个代码中保持一致性以及改进可维护性,应考虑在整个代码中始终中保持一致性以及改进可维护性,应考虑在整个代码中始终中保持一致性以及改进可维护性,应考虑在整个代码中始终中保持一致性以及改进可维护性,应考虑在整个代码中始终使用这些约定。使用这些约定。使用这些约定。使用这些约定。参考资料vv框架设计指南:可重用框架设计指南:可重用.NET 库的约定、库的约定、术语和模式术语和模式一、大小写约定一、大小写约定vv许多命名约定都与标识符的大小写有关。许多命名约定都与标识符的大小写有关。大小写样式大小写样式 样式名称样式名称样式名称样式名称样式说明样式说明样式说明样式说明例子例子例子例子Pascal P
5、ascal 大小写大小写大小写大小写 将标识符的首字母和后将标识符的首字母和后将标识符的首字母和后将标识符的首字母和后面连接的每个单词的首面连接的每个单词的首面连接的每个单词的首面连接的每个单词的首字母都大写。字母都大写。字母都大写。字母都大写。BackColor BackColor CamelCamel大小写大小写大小写大小写 标识符的首字母小写,标识符的首字母小写,标识符的首字母小写,标识符的首字母小写,而每个后面连接的单词而每个后面连接的单词而每个后面连接的单词而每个后面连接的单词的首字母都大写。的首字母都大写。的首字母都大写。的首字母都大写。backColor backColor 大写
6、大写大写大写 标识符中的所有字母都标识符中的所有字母都标识符中的所有字母都标识符中的所有字母都大写。大写。大写。大写。IOIO标识符的大小写规则标识符的大小写规则 vv如果标识符由多个单词组成,请不要在各单词之间使用分隔如果标识符由多个单词组成,请不要在各单词之间使用分隔如果标识符由多个单词组成,请不要在各单词之间使用分隔如果标识符由多个单词组成,请不要在各单词之间使用分隔符,如下划线(符,如下划线(符,如下划线(符,如下划线(“_”_”)或连字符()或连字符()或连字符()或连字符(“-”-”)等。而应使用大)等。而应使用大)等。而应使用大)等。而应使用大小写来指示每个单词的开头。小写来指示
7、每个单词的开头。小写来指示每个单词的开头。小写来指示每个单词的开头。vv下列准则是用于标识符的通用规则。下列准则是用于标识符的通用规则。下列准则是用于标识符的通用规则。下列准则是用于标识符的通用规则。n n对于由多个单词组成的所有公共成员、类型及命名空间名称,要使对于由多个单词组成的所有公共成员、类型及命名空间名称,要使对于由多个单词组成的所有公共成员、类型及命名空间名称,要使对于由多个单词组成的所有公共成员、类型及命名空间名称,要使用用用用 Pascal Pascal 大小写。大小写。大小写。大小写。vv注意,这条规则不适用于实例字段。由于成员设计准则中详细说明的原注意,这条规则不适用于实例
8、字段。由于成员设计准则中详细说明的原注意,这条规则不适用于实例字段。由于成员设计准则中详细说明的原注意,这条规则不适用于实例字段。由于成员设计准则中详细说明的原因,不应使用公共实例字段。因,不应使用公共实例字段。因,不应使用公共实例字段。因,不应使用公共实例字段。vv对参数名称使用大小写混合。对参数名称使用大小写混合。对参数名称使用大小写混合。对参数名称使用大小写混合。下表汇总了标识符的大小写规则,并提供了不同类型标识符的示例。下表汇总了标识符的大小写规则,并提供了不同类型标识符的示例。下表汇总了标识符的大小写规则,并提供了不同类型标识符的示例。下表汇总了标识符的大小写规则,并提供了不同类型标
9、识符的示例。标识符标识符大小写方式大小写方式示例示例类类PascalAppDomain枚举类型枚举类型PascalErrorLevel枚举值枚举值PascalFatalError事件事件PascalValueChanged异常类异常类PascalWebException只读的静态字段只读的静态字段PascalRedValue接口接口PascalIDisposable方法方法PascalToString命名空间命名空间PascalSystem.Drawing参数参数CameltypeName属性属性PascalBackColor首字母缩写词的大小写规则首字母缩写词的大小写规则 vv首字母缩写词是
10、由术语或短语中各单词的首字母构成的单词。首字母缩写词是由术语或短语中各单词的首字母构成的单词。首字母缩写词是由术语或短语中各单词的首字母构成的单词。首字母缩写词是由术语或短语中各单词的首字母构成的单词。n n例如,例如,例如,例如,HTML HTML 是是是是 Hypertext Markup Language Hypertext Markup Language 的首字母缩写。的首字母缩写。的首字母缩写。的首字母缩写。vv只有在公众广为认知和理解的情况下,才应在标识符中使用只有在公众广为认知和理解的情况下,才应在标识符中使用只有在公众广为认知和理解的情况下,才应在标识符中使用只有在公众广为认知
11、和理解的情况下,才应在标识符中使用首字母缩写词。首字母缩写词。首字母缩写词。首字母缩写词。vv首字母缩写词不同于缩写词,因为缩写词是一个单词的缩写。首字母缩写词不同于缩写词,因为缩写词是一个单词的缩写。首字母缩写词不同于缩写词,因为缩写词是一个单词的缩写。首字母缩写词不同于缩写词,因为缩写词是一个单词的缩写。例如,例如,例如,例如,ID ID 是是是是 identifier identifier 的缩写。通常情况下,库名不应使用的缩写。通常情况下,库名不应使用的缩写。通常情况下,库名不应使用的缩写。通常情况下,库名不应使用缩写词。缩写词。缩写词。缩写词。vv说明:可在标识符中使用的两个缩写词是
12、说明:可在标识符中使用的两个缩写词是 ID 和和 OK。在采用。在采用 Pascal 大小写格式的标识符大小写格式的标识符中,这两个缩写词的大小写形式应分别为中,这两个缩写词的大小写形式应分别为 Id 和和 Ok。如果在采用大小写混合格式的标识符。如果在采用大小写混合格式的标识符中将这两个缩写词用作首个单词,则它们的中将这两个缩写词用作首个单词,则它们的大小写形式应分别为大小写形式应分别为 id 和和 ok。vv首字母缩写词的大小写取决于首字母缩写词首字母缩写词的大小写取决于首字母缩写词的长度。的长度。n n如果某一首字母缩写词恰好包含两个字符,则将如果某一首字母缩写词恰好包含两个字符,则将如
13、果某一首字母缩写词恰好包含两个字符,则将如果某一首字母缩写词恰好包含两个字符,则将其视为其视为其视为其视为短型首字母缩写词短型首字母缩写词短型首字母缩写词短型首字母缩写词。n n包含三个或三个以上字符的首字母缩写词为包含三个或三个以上字符的首字母缩写词为包含三个或三个以上字符的首字母缩写词为包含三个或三个以上字符的首字母缩写词为长型长型长型长型首字母缩写词首字母缩写词首字母缩写词首字母缩写词。短型和长型首字母缩写词短型和长型首字母缩写词的大小写规则的大小写规则 实例实例Pascal Camel1 1两字符首字母缩写词的两个字符都要两字符首字母缩写词的两个字符都要两字符首字母缩写词的两个字符都要
14、两字符首字母缩写词的两个字符都要大写,但当首字母缩写词作为大小写大写,但当首字母缩写词作为大小写大写,但当首字母缩写词作为大小写大写,但当首字母缩写词作为大小写混合格式的标识符的首个单词时例外。混合格式的标识符的首个单词时例外。混合格式的标识符的首个单词时例外。混合格式的标识符的首个单词时例外。DBRate DBRate ioChannel ioChannel 2 2包含三个或三个以上字符的首字母缩包含三个或三个以上字符的首字母缩包含三个或三个以上字符的首字母缩包含三个或三个以上字符的首字母缩写词只有第一个字符大写,但当首字写词只有第一个字符大写,但当首字写词只有第一个字符大写,但当首字写词只
15、有第一个字符大写,但当首字母缩写词作为大小写混合格式的标识母缩写词作为大小写混合格式的标识母缩写词作为大小写混合格式的标识母缩写词作为大小写混合格式的标识符的首个单词时例外。符的首个单词时例外。符的首个单词时例外。符的首个单词时例外。XmlWriter XmlWriter htmlReader htmlReader 3 3如果任何首字母缩写词位于采用大小如果任何首字母缩写词位于采用大小如果任何首字母缩写词位于采用大小如果任何首字母缩写词位于采用大小写混合格式的标识符开头,则无论该写混合格式的标识符开头,则无论该写混合格式的标识符开头,则无论该写混合格式的标识符开头,则无论该首字母缩写词的长度如
16、何,都不大写首字母缩写词的长度如何,都不大写首字母缩写词的长度如何,都不大写首字母缩写词的长度如何,都不大写其中的任何字符。其中的任何字符。其中的任何字符。其中的任何字符。xmlStreamxmlStreamdbServerName dbServerName 复合词和常用术语的大小写规则复合词和常用术语的大小写规则 vv不要将所谓的紧凑格式复合词中的每个单词都大写。这种复不要将所谓的紧凑格式复合词中的每个单词都大写。这种复不要将所谓的紧凑格式复合词中的每个单词都大写。这种复不要将所谓的紧凑格式复合词中的每个单词都大写。这种复合词是指写作一个单词的复合词,如合词是指写作一个单词的复合词,如合词是
17、指写作一个单词的复合词,如合词是指写作一个单词的复合词,如“endpoint”endpoint”。vv例如,例如,例如,例如,hashtable hashtable 是一个紧凑格式的复合词,应将其视为一是一个紧凑格式的复合词,应将其视为一是一个紧凑格式的复合词,应将其视为一是一个紧凑格式的复合词,应将其视为一个单词并相应地确定大小写。如果采用个单词并相应地确定大小写。如果采用个单词并相应地确定大小写。如果采用个单词并相应地确定大小写。如果采用 Pascal Pascal 大小写格式,大小写格式,大小写格式,大小写格式,则该复合词为则该复合词为则该复合词为则该复合词为 HashtableHash
18、table;如果采用大小写混合格式,则该;如果采用大小写混合格式,则该;如果采用大小写混合格式,则该;如果采用大小写混合格式,则该复合词为复合词为复合词为复合词为 hashtablehashtable。若要确定某个单词是否是紧凑格式的。若要确定某个单词是否是紧凑格式的。若要确定某个单词是否是紧凑格式的。若要确定某个单词是否是紧凑格式的复合词,请查阅最新的词典。复合词,请查阅最新的词典。复合词,请查阅最新的词典。复合词,请查阅最新的词典。区分大小写区分大小写 vv大小写准则只是为了使标识符更易于阅读和大小写准则只是为了使标识符更易于阅读和辨认。不能将大小写规则用作避免库元素之辨认。不能将大小写规
19、则用作避免库元素之间的命名冲突的手段。间的命名冲突的手段。二、通用命名约定二、通用命名约定vv通用命名约定讨论的是如何为库元素选择最通用命名约定讨论的是如何为库元素选择最适当的名称。这些准则适用于所有标识符。适当的名称。这些准则适用于所有标识符。后面各节讨论特定元素(如命名空间或属性)后面各节讨论特定元素(如命名空间或属性)的命名。的命名。选择名称选择名称 vv(1)请选择易读的标识符名称。)请选择易读的标识符名称。n n例如,英文属性名称例如,英文属性名称例如,英文属性名称例如,英文属性名称 HorizontalAlignment HorizontalAlignment 比比比比 Align
20、mentHorizontal AlignmentHorizontal 更具可读性。更具可读性。更具可读性。更具可读性。vv(2)可读性比简洁性更重要。)可读性比简洁性更重要。n n属性名称属性名称属性名称属性名称 CanScrollHorizontally CanScrollHorizontally 比比比比 ScrollableXScrollableX(指指指指 X X 轴,但意义不明确)更好。轴,但意义不明确)更好。轴,但意义不明确)更好。轴,但意义不明确)更好。vv(3 3)不要使用下划线、连字符或任何其他非字母数)不要使用下划线、连字符或任何其他非字母数)不要使用下划线、连字符或任何其
21、他非字母数)不要使用下划线、连字符或任何其他非字母数字字符。字字符。字字符。字字符。vv(4 4)不要使用匈牙利表示法。)不要使用匈牙利表示法。)不要使用匈牙利表示法。)不要使用匈牙利表示法。n n匈牙利表示法是在标识符中使用一个前缀对参数的某些元匈牙利表示法是在标识符中使用一个前缀对参数的某些元匈牙利表示法是在标识符中使用一个前缀对参数的某些元匈牙利表示法是在标识符中使用一个前缀对参数的某些元数据进行编码数据进行编码数据进行编码数据进行编码 。如:。如:。如:。如:CStudent CStudent vv(5 5)避免使用与常用编程语言的关键字冲突的标识)避免使用与常用编程语言的关键字冲突的
22、标识)避免使用与常用编程语言的关键字冲突的标识)避免使用与常用编程语言的关键字冲突的标识符。符。符。符。缩写和首字母缩写词缩写和首字母缩写词 vv不要将缩写或缩略形式用作标识符名称的组不要将缩写或缩略形式用作标识符名称的组成部分。成部分。n n例如,使用例如,使用例如,使用例如,使用 OnButtonClick OnButtonClick 而不要使用而不要使用而不要使用而不要使用 OnBtnClickOnBtnClick。vv除非必要,不要使用任何未被广泛接受的首除非必要,不要使用任何未被广泛接受的首字母缩写词。字母缩写词。语言特定的名称语言特定的名称 vv对于类型名称,应使用语义上有意义的名
23、称而不要使用语言对于类型名称,应使用语义上有意义的名称而不要使用语言对于类型名称,应使用语义上有意义的名称而不要使用语言对于类型名称,应使用语义上有意义的名称而不要使用语言特定的关键字。特定的关键字。特定的关键字。特定的关键字。n n例如,名称例如,名称例如,名称例如,名称 GetLength GetLength 比比比比 GetInt GetInt 更好。更好。更好。更好。vv在标识符的语义含义仅限于其类型的极少数情况下,应使用在标识符的语义含义仅限于其类型的极少数情况下,应使用在标识符的语义含义仅限于其类型的极少数情况下,应使用在标识符的语义含义仅限于其类型的极少数情况下,应使用一般公共语
24、言运行时一般公共语言运行时一般公共语言运行时一般公共语言运行时 (CLR)(CLR)类型名称,而不要使用语言特定类型名称,而不要使用语言特定类型名称,而不要使用语言特定类型名称,而不要使用语言特定的名称。的名称。的名称。的名称。n n例如,将数据转换为例如,将数据转换为例如,将数据转换为例如,将数据转换为 Int16 Int16 的方法应命名为的方法应命名为的方法应命名为的方法应命名为 ToInt16 ToInt16 而不是而不是而不是而不是 ToShort ToShort。三、程序集和三、程序集和DLL的命名的命名vv程序集和程序集和 DLL 是库的物理组织,而命名空间是库的物理组织,而命名
25、空间是逻辑组织,其构成应与程序集的组织无关。是逻辑组织,其构成应与程序集的组织无关。命名空间可以且经常跨越多个程序集。命名空间可以且经常跨越多个程序集。vv考虑按下面的模式命名考虑按下面的模式命名 DLL:n n.dll.dllvv其中其中 包含一个或多个以圆点分包含一个或多个以圆点分隔的子句。隔的子句。n n例如,。例如,。例如,。例如,。四、命名空间的名称四、命名空间的名称vv为命名空间选择的名称应指示命名空间中的为命名空间选择的名称应指示命名空间中的类型所提供的功能。类型所提供的功能。n n例如,例如,例如,例如,System.Net.Sockets System.Net.Sockets
26、 命名空间包含的类型命名空间包含的类型命名空间包含的类型命名空间包含的类型允许开发人员使用套接字通过网络进行通信。允许开发人员使用套接字通过网络进行通信。允许开发人员使用套接字通过网络进行通信。允许开发人员使用套接字通过网络进行通信。vv命名空间名称的一般格式如下:命名空间名称的一般格式如下:.(|).n n例如,。例如,。例如,。例如,。vv不要根据组织层次结构确定命名空间层次结不要根据组织层次结构确定命名空间层次结构中的名称,因为公司的部门名称经过一段构中的名称,因为公司的部门名称经过一段时间后可能会改变。时间后可能会改变。n n命名空间名称是长期使用的、不会更改的标识符。命名空间名称是长
27、期使用的、不会更改的标识符。命名空间名称是长期使用的、不会更改的标识符。命名空间名称是长期使用的、不会更改的标识符。组织的不断发展和变化不应使命名空间名称过时。组织的不断发展和变化不应使命名空间名称过时。组织的不断发展和变化不应使命名空间名称过时。组织的不断发展和变化不应使命名空间名称过时。(1)应用程序命名空间准则)应用程序命名空间准则vv不要在单个应用程序模型内为命名空间中的不要在单个应用程序模型内为命名空间中的多个类型指定相同的名称。多个类型指定相同的名称。n n例如,如果要编写例如,如果要编写例如,如果要编写例如,如果要编写 Windows Windows 窗体应用程序开发窗体应用程序
28、开发窗体应用程序开发窗体应用程序开发人员要使用的特殊控件库,则不应引入名为人员要使用的特殊控件库,则不应引入名为人员要使用的特殊控件库,则不应引入名为人员要使用的特殊控件库,则不应引入名为 Checkbox Checkbox 的类型,因为该应用程序模型已存在的类型,因为该应用程序模型已存在的类型,因为该应用程序模型已存在的类型,因为该应用程序模型已存在同名类型同名类型同名类型同名类型 (CheckBox)(CheckBox)。(2)核心命名空间准则)核心命名空间准则 vv不要指定会与核心命名空间中的任何类型发不要指定会与核心命名空间中的任何类型发生冲突的类型名称。生冲突的类型名称。n n例如,
29、不要使用例如,不要使用例如,不要使用例如,不要使用 Directory Directory 作为类型名称,因为作为类型名称,因为作为类型名称,因为作为类型名称,因为这会与这会与这会与这会与 Directory Directory 类型冲突。类型冲突。类型冲突。类型冲突。(3)技术命名空间准则)技术命名空间准则vv不要引入会导致技术命名空间的类型与应用不要引入会导致技术命名空间的类型与应用程序模型命名空间中的类型发生冲突的类型程序模型命名空间中的类型发生冲突的类型名称(除非该技术不用于该应用程序模型)。名称(除非该技术不用于该应用程序模型)。五、类、结构和接口的名称五、类、结构和接口的名称 vv
30、按照按照按照按照 Pascal Pascal 大小写格式,使用名词或名词短语(或大小写格式,使用名词或名词短语(或大小写格式,使用名词或名词短语(或大小写格式,使用名词或名词短语(或偶尔使用形容词短语)为类、接口和值类型命名。偶尔使用形容词短语)为类、接口和值类型命名。偶尔使用形容词短语)为类、接口和值类型命名。偶尔使用形容词短语)为类、接口和值类型命名。vv不要为类名加前缀(如字母不要为类名加前缀(如字母不要为类名加前缀(如字母不要为类名加前缀(如字母 C C)。)。)。)。n n接口不适用此规则,它应以字母接口不适用此规则,它应以字母接口不适用此规则,它应以字母接口不适用此规则,它应以字母
31、 I I 开头。开头。开头。开头。vv考虑在派生类的末尾使用基类名称。考虑在派生类的末尾使用基类名称。考虑在派生类的末尾使用基类名称。考虑在派生类的末尾使用基类名称。n n例如,从例如,从例如,从例如,从 Stream Stream 继承的继承的继承的继承的 Framework Framework 类型以类型以类型以类型以 Stream Stream 结尾,结尾,结尾,结尾,从从从从 Exception Exception 继承的类型以继承的类型以继承的类型以继承的类型以 Exception Exception 结尾。结尾。结尾。结尾。vv为接口名称加上字母为接口名称加上字母 I 前缀,以指示
32、该类型前缀,以指示该类型为接口。为接口。vv在定义类在定义类/接口对(其中类是接口的标准实现)接口对(其中类是接口的标准实现)时,一定要确保类和接口的名称除接口名称时,一定要确保类和接口的名称除接口名称以字母以字母 I 为前缀外,二者应完全相同。为前缀外,二者应完全相同。n n例如,例如,例如,例如,Framework Framework 提供提供提供提供 IAsyncResult IAsyncResult 接口和接口和接口和接口和 AsyncResult AsyncResult 类。类。类。类。枚举的名称枚举的名称 vv不要在枚举值名称中使用前缀。不要在枚举值名称中使用前缀。不要在枚举值名称
33、中使用前缀。不要在枚举值名称中使用前缀。n n例如,不要对例如,不要对例如,不要对例如,不要对 ADO ADO 枚举使用枚举使用枚举使用枚举使用 adoado之类的前缀,也不要对之类的前缀,也不要对之类的前缀,也不要对之类的前缀,也不要对多格式文本枚举使用多格式文本枚举使用多格式文本枚举使用多格式文本枚举使用 rtf rtf 之类的前缀,依此类推。之类的前缀,依此类推。之类的前缀,依此类推。之类的前缀,依此类推。不正确不正确不正确不正确正确正确正确正确public enum Teampublic enum Team TeamsAlpha,TeamsAlpha,TeamsBeta,TeamsBe
34、ta,TeamsDelta TeamsDelta public enum Teampublic enum Team Alpha,Alpha,Beta,Beta,Delta Delta vv不要将不要将不要将不要将 Enum Enum 用作枚举类型的后缀。用作枚举类型的后缀。用作枚举类型的后缀。用作枚举类型的后缀。vv不要在标志枚举的名称中添加不要在标志枚举的名称中添加不要在标志枚举的名称中添加不要在标志枚举的名称中添加 Flags Flags 作为后缀。作为后缀。作为后缀。作为后缀。vv对枚举使用单数名称,除非枚举值是位域。对枚举使用单数名称,除非枚举值是位域。对枚举使用单数名称,除非枚举值是
35、位域。对枚举使用单数名称,除非枚举值是位域。vv对使用位域值的枚举(也称为标志枚举)使用复数对使用位域值的枚举(也称为标志枚举)使用复数对使用位域值的枚举(也称为标志枚举)使用复数对使用位域值的枚举(也称为标志枚举)使用复数名称。名称。名称。名称。六、类型成员的名称六、类型成员的名称 vv类型包含以下几种成员:类型包含以下几种成员:n n方法方法方法方法 n n属性属性属性属性n n字段字段字段字段n n事件事件事件事件vv本节中的准则有助于类库设计者为成员选择本节中的准则有助于类库设计者为成员选择与与.NET Framework 一致的名称。一致的名称。方法的名称方法的名称 vv使用动词或动
36、词短语作为方法的名称。使用动词或动词短语作为方法的名称。n n通常,方法对数据进行操作,因此,使用动词描通常,方法对数据进行操作,因此,使用动词描通常,方法对数据进行操作,因此,使用动词描通常,方法对数据进行操作,因此,使用动词描述方法的操作可使开发人员更易于了解方法所执述方法的操作可使开发人员更易于了解方法所执述方法的操作可使开发人员更易于了解方法所执述方法的操作可使开发人员更易于了解方法所执行的操作。定义由方法执行的操作时,应从开发行的操作。定义由方法执行的操作时,应从开发行的操作。定义由方法执行的操作时,应从开发行的操作。定义由方法执行的操作时,应从开发人员的角度仔细选择明确的名称。不要
37、选择描述人员的角度仔细选择明确的名称。不要选择描述人员的角度仔细选择明确的名称。不要选择描述人员的角度仔细选择明确的名称。不要选择描述方法如何执行其操作的动词,也就是说,不要使方法如何执行其操作的动词,也就是说,不要使方法如何执行其操作的动词,也就是说,不要使方法如何执行其操作的动词,也就是说,不要使用实现细节作为方法名称。用实现细节作为方法名称。用实现细节作为方法名称。用实现细节作为方法名称。属性的名称属性的名称 vv使用名词、名词短语或形容词作为属性的名称。使用名词、名词短语或形容词作为属性的名称。使用名词、名词短语或形容词作为属性的名称。使用名词、名词短语或形容词作为属性的名称。n n名
38、词短语或形容词适合于属性,因为属性保存数据。名词短语或形容词适合于属性,因为属性保存数据。名词短语或形容词适合于属性,因为属性保存数据。名词短语或形容词适合于属性,因为属性保存数据。vv不要使用与不要使用与不要使用与不要使用与 Get Get 方法同名的属性。方法同名的属性。方法同名的属性。方法同名的属性。n n例如,不要将一个属性命名为例如,不要将一个属性命名为例如,不要将一个属性命名为例如,不要将一个属性命名为 EmployeeRecordEmployeeRecord,又将一个方法命名,又将一个方法命名,又将一个方法命名,又将一个方法命名为为为为 GetEmployeeRecordGetE
39、mployeeRecord。开发人员会不知道使用哪个成员来完成其。开发人员会不知道使用哪个成员来完成其。开发人员会不知道使用哪个成员来完成其。开发人员会不知道使用哪个成员来完成其编程任务。编程任务。编程任务。编程任务。vv考虑为属性提供与其类型相同的名称。考虑为属性提供与其类型相同的名称。考虑为属性提供与其类型相同的名称。考虑为属性提供与其类型相同的名称。n n如果某个属性已强类型化为某个枚举,则该属性可与该枚举同名。如果某个属性已强类型化为某个枚举,则该属性可与该枚举同名。如果某个属性已强类型化为某个枚举,则该属性可与该枚举同名。如果某个属性已强类型化为某个枚举,则该属性可与该枚举同名。例如
40、,如果有一个名为例如,如果有一个名为例如,如果有一个名为例如,如果有一个名为 CacheLevel CacheLevel 的枚举,则返回其中一个枚举值的枚举,则返回其中一个枚举值的枚举,则返回其中一个枚举值的枚举,则返回其中一个枚举值的属性也可以命名为的属性也可以命名为的属性也可以命名为的属性也可以命名为 CacheLevelCacheLevel。事件的名称事件的名称 vv在事件处理程序签名中使用命名为在事件处理程序签名中使用命名为“sender”和和“e”的两个参数。的两个参数。n nsender sender 参数的类型应为参数的类型应为参数的类型应为参数的类型应为 ObjectObjec
41、t,e e 参数应是参数应是参数应是参数应是 EventArgs EventArgs 的实例或继承自的实例或继承自的实例或继承自的实例或继承自 EventArgs EventArgs 的实例。的实例。的实例。的实例。字段的名称字段的名称 vv字段的命名准则适用于静态公共字段和静态字段的命名准则适用于静态公共字段和静态受保护字段。不要定义公共实例字段或受保受保护字段。不要定义公共实例字段或受保护实例字段。护实例字段。vv不要在字段名称中使用前缀。不要在字段名称中使用前缀。n n例如,不要使用例如,不要使用例如,不要使用例如,不要使用 g_ g_ 或或或或 s_ s_ 来区分静态字段和非静来区分静
42、态字段和非静来区分静态字段和非静来区分静态字段和非静态字段。态字段。态字段。态字段。七、参数名七、参数名 vv选择适当的参数名称可极大改善库的可用性。选择适当的参数名称可极大改善库的可用性。适当的参数名称应指示该参数会影响的数据适当的参数名称应指示该参数会影响的数据或功能。或功能。vv使用描述性参数名称。使用描述性参数名称。使用描述性参数名称。使用描述性参数名称。n n在大多数情况下,参数名称及其类型应足以确定参数的用法。在大多数情况下,参数名称及其类型应足以确定参数的用法。在大多数情况下,参数名称及其类型应足以确定参数的用法。在大多数情况下,参数名称及其类型应足以确定参数的用法。vv考虑使用
43、反映参数含义的名称而不是反映参数类型的名称。考虑使用反映参数含义的名称而不是反映参数类型的名称。考虑使用反映参数含义的名称而不是反映参数类型的名称。考虑使用反映参数含义的名称而不是反映参数类型的名称。n n在开发人员工具和文档中,参数的类型通常都是可见的。通过选择在开发人员工具和文档中,参数的类型通常都是可见的。通过选择在开发人员工具和文档中,参数的类型通常都是可见的。通过选择在开发人员工具和文档中,参数的类型通常都是可见的。通过选择一个说明参数的用法或含义的名称,可以向开发人员提供有价值的一个说明参数的用法或含义的名称,可以向开发人员提供有价值的一个说明参数的用法或含义的名称,可以向开发人员
44、提供有价值的一个说明参数的用法或含义的名称,可以向开发人员提供有价值的信息,帮助他们找到任务所需的成员,也有助于向成员传递正确的信息,帮助他们找到任务所需的成员,也有助于向成员传递正确的信息,帮助他们找到任务所需的成员,也有助于向成员传递正确的信息,帮助他们找到任务所需的成员,也有助于向成员传递正确的数据。数据。数据。数据。八、资源的名称八、资源的名称 vv本主题中准则适用于可本地化的资源,如错本主题中准则适用于可本地化的资源,如错误信息和菜单文本。误信息和菜单文本。vv使用点分隔符(使用点分隔符(使用点分隔符(使用点分隔符(“.”.”)以清晰的层次结构表示标识符。)以清晰的层次结构表示标识符
45、。)以清晰的层次结构表示标识符。)以清晰的层次结构表示标识符。n n例如,例如,例如,例如,Menus.FileMenu.Close.Text Menus.FileMenu.Close.Text 和和和和 Menus.FileMenu.Close.Color Menus.FileMenu.Close.Color 等名称符合此准则。等名称符合此准则。等名称符合此准则。等名称符合此准则。vv对异常消息资源使用下面的命名约定。资源标识符应由异常对异常消息资源使用下面的命名约定。资源标识符应由异常对异常消息资源使用下面的命名约定。资源标识符应由异常对异常消息资源使用下面的命名约定。资源标识符应由异常类型名称加上异常的短标识符构成,二者之间以点分隔。类型名称加上异常的短标识符构成,二者之间以点分隔。类型名称加上异常的短标识符构成,二者之间以点分隔。类型名称加上异常的短标识符构成,二者之间以点分隔。n n例如,例如,例如,例如,ArgumentException.BadEnumValue ArgumentException.BadEnumValue 符合此准则。符合此准则。符合此准则。符合此准则。
限制150内