


下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C# .NET命名规范1. 前言本文档是按照 Maxlab日常C#代码书写规范化需要而对MSDN中类库开发的设计准则的具体化,其中若有不详之处可以参考准则一文。MaxLab所有.NET项目都应严格遵守本代码规范中的代码书写要求,代码书写规范将作为项目审核标准之一,所以请务必认真阅读本文档。2. 大小写约定大小写样式本文中将出现两种大小写样式,这里先分别定义:Pascal大小写可以对三字符或更多字将标识符的首字母和后面连接的每个单词的首字母都大写。符的标识符使用 Pascal大小写。例如:BackColorCamel大小写标识符的首字母小写,而每个后面连接的单词的首字母都大写。例如:backCo
2、lor标识符大小写规则下表中列出常见的代码元素的样式规范和示例标识符样式示例类PascalAppDomain枚举类型PascalErrorLevel枚举值PascalFatalError事件PascalValueCha nged异常类PascalWebExcepti on只读的静态字段PascalRedValue接口PascalIDisposable方法PascalToStri ng命名空间PascalSystem.Drawi ng参数CameltypeName属性PascalBackColor常量大写REGEX_PARSE_URL除了遵循以上大小写约定外还需注意以下约定(除常量为特例):1.
3、 如果标识符由多个单词组成,请不要在各单词之间使用分隔符,如下划线( 连字符(“”)等。而应使用大小写来指示每个单词的开头。2. 所有公共的成员如:方法、属性,都应使用Pascal大小写样式首缩写词的大小写规则缩写词分为以下两种:首字母缩写词首字母缩写词是由术语或短语中各单词的首字母构成的单词。例如,HTML 是 Hypertext Markup Language 的首字母缩写。为了方便编码规范的实施,本文规定受字母缩写词必须至少为两个单词,正好为两个单词的首字母缩写词称其为短型首字母缩写词”两个单词以上的称其为长型首字母缩写词”单缩写词单缩写词是一个单词的缩写。例如,ID是identifie
4、r的缩写。注意:可在标识符中使用的两个缩写词是ID和0K。在采用 Pascal大小写格式的标识符中,这两个缩写词的大小写形式应分别为Id和Ok。如果在采用大小写混合格式的标识符中将这两个缩写词用作首个单词,则它们的大小写形式应分别为 id和ok。首字母缩写词有以下大小写规则:短型首字母缩写词在Pascal大小写样式中,两个字母都应大写。在Camel大小写样式中,如果是首个单词,两个字母都应小写。例如,名为DBRate的属性是一个采用 Pascal大小写格式的标识符,它使用短型首字母缩写词(DB)作为首个单词。又如,名为ioChannel的参数是一个采用大小写混合格式的标识符,它使用短型 首字母
5、缩写词(IO)作为首个单词。长型首字母缩写词,在任何大小写样式中都视为一个单词。例如,名为XmlWriter的类是一个采用 Pascal大小写格式的标识符,它使用长型首字母缩写词作为首个单词。又如,名为htmIReader的参数是一个采用大小写混合格式的标识符,它使用长型 首字母缩写词作为首个单词。复合词的大小写规则:所有复合词在任何大小写样式中都视为一个完整单词。例如,hashtable是一个紧凑格式的复合词,应将其视为一个单词并相应地确定大小写。如果采用Pascal大小写格式,则该复合词为Hashtable;如果采用大小写混合格式,则该复合词为 hashtable。若要确定某个单词是否是紧
6、凑格式的复合词,请查阅最新的词典。区分大小写大小写准则只是为了使标识符更易于阅读和辨认。不能将大小写规则用作避免库元素之间的命名冲突的手段。3. 通用命名约定通用命名约定讨论的是如何为库元素选择最适当的名称。这些准则适用于所有标识符。 后面各节讨论特定元素(如命名空间或属性)的命名。选择名称1. 请选择易读的标识符名称例如,英文属性名称HorizontalAlignment 比AlignmentHorizontal 更具可读性。2可读性比简洁性更重要例如,属性名称 CanScrollHorizontally 比ScrollableX (指 X轴,但意义不明确)更好。3不要使用下划线、连字符或任
7、何其他非字母数字字符4不要使用匈牙利表示法匈牙利表示法是在标识符中使用一个前缀对参数的某些元数据进行编码,如标识符的数据类型。5避免使用与常用编程语言的关键字冲突的标识符虽然符合CLS的语言必须提供将关键字用作普通字的方法,最佳做法不要求强制开发人员了解如何实现。对于大多数编程语言,语言参考文档都会提供语言所使用的关键字列表。下表提供了某些常用编程语言的参考文档的链接。语言链接C#C#参考C+C+ Lan guage Refere neeVisual BasieVisual Basie 参考缩写和首字母缩写单词尽量避免使用缩写或首字母缩写词。这类名称的可读性较差。同样,要确定某个首字母缩写词是
8、否已受到广泛认可也是很困难的。不要将缩写或缩略形式用作标识符名称的组成部分。例如,使用 On Butto nClick而不要使用 On B tn Click。除非必要,不要使用任何未被广泛接受的首字母缩写词。有关缩写的大写规则,请参见-首缩写词的大小写规则4. 程序集和DLL的名称所有程序集名称都必须和项目的命名空间相对应。程序集信息 中 都必须有且仅有一行assembly: AssemblyCopyright("Copyright 2007-2008 MaxLab.")。5. 命名空间的名称所有命名空间都需以 MaxLab为根命名空间。为命名空间选择的名称应指示命名空间中
9、的类型所提供的功能。例如,命名空间包含的类型允许开发人员使用套接字通过网络进行 通信。命名空间名称的一般格式如下:MaxLab.(<产品>|<技术 >).< 性质 >.< 子命名空间>例如,。命名空间和其中的类型不要使用相同的名称。例如,不要在将“ Debug的类。“ Debug用作命名空间名称的同时,又在该命名空间中提供一个名为命名空间一般准则不要引入宽泛的类型名称,如Element、Node、Log和 Message。在通常情况下,这样极可能导致类型名称冲突。应对宽泛的类型名称进行限定(例如 FormElement、XmlNode Event
10、Log、SoapMessage)。应用程序命名空间准则不要在单个应用程序模型内为命名空间中的多个类型指定相同的名称。例如,如果要编写 Windows窗体应用程序开发人员要使用的特殊控件库,则不应引入名为Checkbox的类型,因为该应用程序模型已存在同名类型。核心命名空间准则不要指定会与核心命名空间中的任何类型发生冲突的类型名称。例如,不要使用Directory作为类型名称,因为这会与Directory类型冲突。技术命名空间准则不要分配会与单个技术命名空间内的其他类型发生冲突的类型名称。不要引入会导致技术命名空间的类型与应用程序模型命名空间中的类型发生冲突的类 型名称(除非该技术不用于该应用程
11、序模型)。6. 接口、类和结构的名称通常,类型名称应该是名词短语,其中名词是由类型表示的实体。例如,Button、Stack和File都具有名称,用于标识由类型表示的实体。从开发人员的角度选择标识实体的名称;名称应反映使用场合。下面的准则适用于如何选择类型名称:1. 按照Pascal大小写格式,使用名词或名词短语(或偶尔使用形容词短语)为类、接 口和值类型命名。2. 不要为类名加前缀(如字母 C)。3. 接口不适用此规则,它应以字母I开头。4. 考虑在派生类的末尾使用基类名称。例如,从 Stream继承的 Framework类型以 Stream 结尾,从 Exception继承的 类型以Exc
12、eption结尾。5. 为接口名称加上字母I前缀,以指示该类型为接口。6. 在定义类/接口对(其中类是接口的标准实现)时,一定要确保类和接口的名称除接 口名称以字母I为前缀外,二者应完全相同。例如,Framework 提供 lAsyncResult 接口和 AsyncResult 类。泛型类型参数的名称用描述性名称为泛型类型参数命名,除非单个字母的名称已完全可以自我说明而无需描述性名称。IDictionary是一个符合此准则的接口的示例。对具有一个单字母类型参数的类型,考虑将字母T用作这些类型的类型参数名称。将字母T作为描述性类型参数名称的前缀。考虑在参数名称中指示置于类型参数上的约束。例如,
13、约束于ISession的参数可称为TSessi on。常见类型的名称下面的准则提供的命名约定有助于开发人员了解某些类的使用场合:01.向自定义属性类添加Attribute后缀。02. ObsoleteAttribute 和 AttributeUsageAttribute 是符合此准则的类型名称。03.向在事件中使用的类型(如C#事件的返回类型)的名称添加 EventHandler后 缀。04. AssemblyLoadEventHandler是符合此准则的委托名称。05.向不是事件处理程序的委托的名称添加Callback后缀。06.不要向委托添加Delegate后缀。07.向扩展 System
14、.EventArgs 的类添加 EventArgs 后缀。08.不要从System.Enum类派生;使用当前所用语言支持的关键字。例如,在C#中应使用en um关键字。09.向从 System.Exception继承的类型添加 Exception后缀。10. 向 实 现System.Collectio ns.lDictio nary或System.Collections.Generic.lDictionary<TKey, TValue>的类型添加 Dictionary 后缀。注意,System.Collections.IDictionary 是特定类型的集合,但此准则的优先级 高于
15、以下更为一般的集合准则。11. 向实现、System.Collecti ons.l Collect ion、Enumerable< T>、System.Collecti on s.Ge nericCollect ion<T>或 System.Collections.Generic.lList<T>的类型添加 Collection 后缀。12. 向从 继承的类型添加Stream后缀。13. 向从System.Security.CodeAccessPermission 继承的类型或实现System.Security.IPermission 的类型添加 Permi
16、ssion 后缀。以上准则中提及的从某个其他类型继承的类型,指的是所有的继承者,而不只是直接继承的类型。例如,向从Exception继承的类型添加 Exception后缀"这一准则意味着在继承层次结 构中具有Exception的任何类型都应该使用以Exception结尾的名称。每条这样的准则还用来保留指定的后缀;除非类型满足该准则表述的条件,否则不应使用该后缀。例如,如果类型不是从Exception直接或间接继承的,则类型名称不能以Exception结尾。枚举的名称不要在枚举值名称中使用前缀。例如,不要对ADO枚举使用ad之类的前缀,也不要对多格式文本枚举使用rtf之类的前缀,依此类
17、推。F面的代码示例演示了不正确的枚这还意味着不应在枚举值名称中包含枚举类型名称。 举值命名。public enum Teams TeamsAlpha, TeamsBeta, TeamsDelta不要将Enum用作枚举类型的后缀。不要在标志枚举的名称中添加Flags作为后缀。对枚举使用单数名称,除非枚举值是位域。对使用位域值的枚举(也称为标志枚举)使用复数名称。7. 类型成员的名称类型包含以下几种成员:方法、属性、字段、事件方法的名称使用动词或动词短语作为方法的名称。通常,方法对数据进行操作,因此,使用动词描述方法的操作可使开发人员更易于了解方法所执行的操作。定义由方法执行的操作时,应从开发人员
18、的角度仔细选择明确的名称。不要选择描述方法如何执行其操作的动词,也就是说,不要使用实现细节作为方法名称。属性的名称使用名词、名词短语或形容词作为属性的名称。名词短语或形容词适合于属性, 因为属性保存数据。不要使用与 Get方法同名的属性。例如,不要将一个属性命名为 EmployeeRecord,又将一个方法命名为 GetEmployeeRecord。开发人员会不知道使用哪个成员来完成其编程任务。使用肯定性短语作为布尔值属性的名称(如使用Can Seek而不使用Can tSeek)。此外,还可以为布尔值属性添加前缀(如Is、Can或Has),但要注意使用得当。考虑为属性提供与其类型相同的名称。如
19、果某个属性已强类型化为某个枚举,则该属性可与该枚举同名。例如,如果有一个名为 CacheLevel的枚举,则返回其中一个枚举值的属性也可以命名 为 CacheLevel。事件的名称使用动词或动词短语作为事件的名称。在为事件命名时,使用现在时或过去时表示时间上的前后概念。例如,在窗口关闭之前引发的关闭事件可命名为"Closing, ”窗口关闭之后引发的关闭事件可命名为 “ Closed。不要使用“ Before或“ After作为前缀或后缀来指示之前和之后发生的事件。使用后缀EventHandler命名事件处理程序(用作事件类型的委托)。在事件处理程序签名中使用命名为“ sen de和” “ e的两个参数。sender参数的类型应为 Object, e参数应是 EventArgs的实例或继承自EventArgs的实例。使用EventArgs后缀命名事
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 移动互联网时代的技术变革试题及答案
- 探秘软件设计师考试试题及答案攻略
- 统计学的应用实例研究试题及答案
- 投资决策风险题及答案
- 网络管理与用户体验试题及答案
- 软件设计师考试反馈与调整试题及答案
- 法学概论学生交流平台搭建试题及答案
- 信息系统架构的优化与合理化建议试题及答案
- 行政管理试题设计与答案分析
- 2025年软考设计师的核心试题及答案
- 学院“十五五”大学文化建设规划
- GB/T 45545-2025厨房家具配合尺寸
- 安全生产管理和培训制度
- 2025山东济南先行投资集团有限责任公司及权属公司社会招聘169人笔试参考题库附带答案详解
- 八年级心理健康微课件
- 建设工程消防验收课件
- 《大众敏捷制造》课件
- 采矿机器人技术发展-全面剖析
- 地质勘查合同补充协议
- 某桥梁工程专项施工方案
- 信息技术服务质量承诺及保障措施
评论
0/150
提交评论