c代码规范资料

上传人:E**** 文档编号:102048268 上传时间:2019-10-01 格式:DOC 页数:8 大小:38.17KB
返回 下载 相关 举报
c代码规范资料_第1页
第1页 / 共8页
c代码规范资料_第2页
第2页 / 共8页
c代码规范资料_第3页
第3页 / 共8页
c代码规范资料_第4页
第4页 / 共8页
c代码规范资料_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《c代码规范资料》由会员分享,可在线阅读,更多相关《c代码规范资料(8页珍藏版)》请在金锄头文库上搜索。

1、C# 代码规范1、 前言本文档定义了一些通用的代码规范和准则,一般情况下本文档适用于项目组所有项目,特殊情况下,如果客户有自己的代码规范,以客户的代码优先。2、 大小写约定2.1、 大小写样式,本文中将出现两种大小写样式,这里先分别定义:Pascal大小写将标识符的首字母和后面连接的每个单词的首字母都大写。可以对三字符或更多字符的标识符使用 Pascal 大小写。例如:BackColorCamel大小写标识符的首字母小写,而每个后面连接的单词的首字母都大写。例如:backColor 匈牙利命名法基本原则是:变量名=属性+类型+对象描述。 例如:lblName2.2、 标识符大小写规则2.2.1

2、、 下表中列出常见的代码元素的样式规范和示例标识符规则示例类PascalAppDomain枚举类型PascalErrorLevel枚举值PascalWarning事件PascalValueChanging, ValueChanged异常类PascalWebException只读的静态字段PascalCurrentUser接口PascalIDisposable方法PascalToString命名空间PascalSystem.Data参数CameltypeName属性PascalName常量全大写MAXLENGTH, LENGTH_MAXWeb或Win控件匈牙利txtName2.2.2、 除了遵循

3、以上大小写约定外还需注意以下约定(除常量为特例): 如果标识符由多个单词组成,请不要在各单词之间使用分隔符,如下划线(“_”)或连字符(“-”)等。而应使用大小写来指示每个单词的开头。 所有公共的成员如:方法、属性,都应使用Pascal大小写样式2.3、 首缩写词的大小写规则2.3.1、 首字母缩写词首字母缩写词是由术语或短语中各单词的首字母构成的单词。例如,HTML 是 Hypertext Markup Language 的首字母缩写。为了方便编码规范的实施,本文规定受字母缩写词必须至少为两个单词,正好为两个单词的首字母缩写词称其为“短型首字母缩写词”,两个单词以上的称其为“长型首字母缩写词

4、”2.3.2、 单缩写词单缩写词是一个单词的缩写。例如,ID 是 identifier 的缩写。注意:可在标识符中使用的两个缩写词是 ID 和 OK。在采用 Pascal 大小写格式的标识符中,这两个缩写词的大小写形式应分别为 Id 和 Ok。如果在采用大小写混合格式的标识符中将这两个缩写词用作首个单词,则它们的大小写形式应分别为 id 和 ok。2.3.3、 首字母缩写词有以下大小写规则:短型首字母缩写词在Pascal大小写样式中,两个字母都应大写。在Camel大小写样式中,如果是首个单词,两个字母都应小写。例如: 名为 DBRate 的属性是一个采用 Pascal 大小写格式的标识符,它使

5、用短型首字母缩写词 (DB) 作为首个单词。 名为 ioChannel 的参数是一个采用大小写混合格式的标识符,它使用短型首字母缩写词 (IO) 作为首个单词。长型首字母缩写词,在任何大小写样式中都视为一个单词。例如: 名为 XmlWriter 的类是一个采用 Pascal 大小写格式的标识符,它使用长型首字母缩写词作为首个单词。 名为 htmlReader 的参数是一个采用大小写混合格式的标识符,它使用长型首字母缩写词作为首个单词。2.3.4、 复合词的大小写规则:所有复合词在任何大小写样式中都视为一个完整单词。例如,hashtable 是一个紧凑格式的复合词,应将其视为一个单词并相应地确定

6、大小写。如果采用 Pascal 大小写格式,则该复合词为 Hashtable;如果采用大小写混合格式,则该复合词为 hashtable。若要确定某个单词是否是紧凑格式的复合词,请查阅最新的词典。2.3.5、 区分大小写大小写准则只是为了使标识符更易于阅读和辨认。不能将大小写规则用作避免库元素之间的命名冲突的手段。3、 通用命名约定3.1、 通用命名约定讨论的是如何为库元素选择最适当的名称。这些准则适用于所有标识符。后面各节讨论特定元素(如命名空间或属性)的命名。3.2、 名称的选择与命名原则3.2.1、 请选择易读的标识符名称例如,英文属性名称 HorizontalAlignment 比 Al

7、ignmentHorizontal 更具可读性。3.2.2、 可读性比简洁性更重要例如,属性名称 CanScrollHorizontally 比 ScrollableX(指 X 轴,但意义不明确)更好。3.2.3、 不要使用下划线、连字符或任何其他非字母数字字符3.2.4、 不要使用匈牙利表示法匈牙利表示法是在标识符中使用一个前缀对参数的某些元数据进行编码,如标识符的数据类型。3.2.5、 避免使用与常用编程语言的关键字冲突的标识符虽然符合 CLS 的语言必须提供将关键字用作普通字的方法,最佳做法不要求强制开发人员了解如何实现。对于大多数编程语言,语言参考文档都会提供语言所使用的关键字列表。3

8、.3、 缩写和首字母缩写单词尽量避免使用缩写或首字母缩写词。这类名称的可读性较差。同样,要确定某个首字母缩写词是否已受到广泛认可也是很困难的。不要将缩写或缩略形式用作标识符名称的组成部分。例如,使用 OnButtonClick 而不要使用 OnBtnClick。除非必要,不要使用任何未被广泛接受的首字母缩写词。3.4、 程序集和DLL的名称所有程序集名称都必须和项目的命名空间相对应。3.5、 命名空间的名称3.5.1、 所有命名空间都需以公司名或产品名为根命名空间。为命名空间选择的名称应指示命名空间中的类型所提供的功能。例如,System.Net.Sockets 命名空间包含的类型允许开发人员

9、使用套接字通过网络进行通信。3.5.2、 命名空间名称的一般格式如下:(|).例如,ClearCost.Repository.Interface。3.5.3、 命名空间和其中的类型不要使用相同的名称。例如,不要在将“Debug”用作命名空间名称的同时,又在该命名空间中提供一个名为“Debug”的类。3.5.4、 命名空间一般准则不要引入宽泛的类型名称,如 Element、Node、Log 和 Message。在通常情况下,这样极可能导致类型名称冲突。应对宽泛的类型名称进行限定(例如 FormElement、XmlNode EventLog、SoapMessage)。3.5.5、 应用程序命名空

10、间准则不要在单个应用程序模型内为命名空间中的多个类型指定相同的名称。例如,如果要编写 Windows 窗体应用程序开发人员要使用的特殊控件库,则不应引入名为 Checkbox 的类型,因为该应用程序模型已存在同名类型。3.5.6、 核心命名空间准则不要指定会与核心命名空间中的任何类型发生冲突的类型名称。例如,不要使用 Directory 作为类型名称,因为这会与 Directory 类型冲突。3.5.7、 技术命名空间准则不要分配会与单个技术命名空间内的其他类型发生冲突的类型名称。不要引入会导致技术命名空间的类型与应用程序模型命名空间中的类型发生冲突的类型名称(除非该技术不用于该应用程序模型)

11、。3.6、 接口、类和结构的名称通常,类型名称应该是名词短语,其中名词是由类型表示的实体。例如,Button、Stack 和 File 都具有名称,用于标识由类型表示的实体。从开发人员的角度选择标识实体的名称;名称应反映使用场合。下面的准则适用于如何选择类型名称: 按照 Pascal 大小写格式,使用名词或名词短语(或偶尔使用形容词短语)为类、接口和值类型命名。 不要为类名加前缀(如字母 C)。接口不适用此规则,它应以字母 I 开头。 考虑在派生类的末尾使用基类名称。例如,从 Stream 继承的 Framework 类型以 Stream 结尾,从 Exception 继承的类型以 Excep

12、tion 结尾。 为接口名称加上字母 I 前缀,以指示该类型为接口。 在定义类/接口对(其中类是接口的标准实现)时,一定要确保类和接口的名称除接口名称以字母 I 为前缀外,二者应完全相同。例如,Framework 提供 IAsyncResult 接口和 AsyncResult 类。 用描述性名称为泛型类型参数命名,除非单个字母的名称已完全可以自我说明而无需描述性名称。 对具有一个单字母类型参数的类型,考虑将字母 T 用作这些类型的类型参数名称。 将字母 T 作为描述性类型参数名称的前缀。 考虑在参数名称中指示置于类型参数上的约束。例如,约束于 ISession 的参数可称为 TSession。

13、3.7、 常见类型的名称下面的准则提供的命名约定有助于开发人员了解某些类的使用场合: 向自定义属性类添加 Attribute 后缀。 ObsoleteAttribute 和 AttributeUsageAttribute 是符合此准则的类型名称。 向在事件中使用的类型(如 C# 事件的返回类型)的名称添加 EventHandler 后缀。 AssemblyLoadEventHandler 是符合此准则的委托名称。 向不是事件处理程序的委托的名称添加 Callback 后缀。事件处理程序一般以EventHandler结尾 不要向委托添加 Delegate 后缀。 向扩展 System.Event

14、Args 的类添加 EventArgs 后缀。 不要从 System.Enum 类派生;使用当前所用语言支持的关键字。例如,在 C# 中应使用 enum 关键字。 向从 System.Exception 继承的类型添加 Exception 后缀。 向实现IDictionary 或IDictionary 的类型添加 Dictionary 后缀。注意,System.Collections.IDictionary 是特定类型的集合,但此准则的优先级高于以下更为一般的集合准则。 向实现IEnumerable、ICollection、IList、IEnumerable、ICollection或IList

15、 的类型添加适当的说明性后缀。 向从System.Security.CodeAccessPermission 继承的类型或实现 System.Security.IPermission 的类型添加 Permission 后缀。注意:以上准则中提及的从某个其他类型继承的类型,指的是所有的继承者,而不只是直接继承的类型。例如,“向从 Exception 继承的类型添加 Exception 后缀”这一准则意味着在继承层次结构中具有 Exception 的任何类型都应该使用以 Exception 结尾的名称。每条这样的准则还用来保留指定的后缀; 除非类型满足该准则表述的条件,否则不应使用该后缀。例如,如果类型不是从 Exception 直接或间接继承的,则类型名称不能以 Exception 结尾。3.8、 枚举的名称不要在枚举值名称中使用前缀。例如,不要对 ADO 枚举使用 ad 之类的前缀,也不要对多格式文本枚举使用 rtf 之

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号