开发人员手册VSNET开发规范篇_第1页
开发人员手册VSNET开发规范篇_第2页
开发人员手册VSNET开发规范篇_第3页
开发人员手册VSNET开发规范篇_第4页
开发人员手册VSNET开发规范篇_第5页
已阅读5页,还剩44页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、密级:秘密 开开 发发 人人 员员 手手 册册 -VS.NET-VS.NET 开发规范篇开发规范篇文档最后修订者及日期:孙立新2009-3-16本版文件批准人及日期:浪潮集团山东通用软件有限公司目录目录1 1导言导言.5 51.1目的.51.2适用范围.51.3术语定义.51.4参考资料.51.5版本更新记录.52 2使用的开发工具:使用的开发工具:.6 63 3程序源代码风格定义程序源代码风格定义.6 63.1代码结构风格.63.2注释风格.73.2.1单行注释.83.2.2多行注释.83.2.3文档型注释.83.2.4文档型注释规范.113.3代码书写风格.143.3.1缩进.143.3.

2、2空行.143.3.3换行.153.3.4空格.153.3.5花括号.164 4命名规范命名规范.16164.1大写规则.164.2区分大小写.174.3缩写.184.4措词.194.5避免类型名称混淆.204.6命名空间命名规范.224.7类命名规范.234.8接口命名规范.244.9属性命名规范.254.10枚举类型命名规范 .254.11静态字段命名规范 .254.12参数命名规范 .264.13方法命名规范 .264.14属性命名规范 .264.15事件命名规范 .284.16数据库对象命名规范 .294.16.1数据库名(开发过程中).294.16.2数据库表.294.16.3字段.

3、304.16.4存储过程命名约定.314.16.5触发器(插入,更新,删除)命名约定.314.16.6视图命名约定.314.16.7自定义数据类型命名约定.314.16.8自定义函数命名约定.324.17数据库表结构设计规范 .334.18数据库存储过程编写规范 .345 5界面规范界面规范.34345.1总则.345.2遵从原则.345.3色彩搭配.355.4屏幕大小.355.5主控页面.355.5.1主页:登录窗口.355.5.2主操作页分成三个区域:标题菜单区、系统管理区、操作区.365.5.3浏览器.365.6各种页面模板应用的场景.375.6.1字典类.375.6.2单据类.385.

4、6.3管理类.395.6.4索引类.405.6.5Tab 页类.405.6.6响应式窗口类.405.6.7查询结果/报表类.406 6提示信息规范提示信息规范.41416.1总则.416.2提示信息.417 7热键定义、帮助及使用规范热键定义、帮助及使用规范.41417.1总则.417.2规范.418 8单元测试规范(从开发人员角度)单元测试规范(从开发人员角度).42428.1总则.428.2测试规范.429 9配置管理规范(从开发人员角度)配置管理规范(从开发人员角度).43439.1总则.439.2开发前的准备.439.3开发过程中的规则.441010程序模板程序模板 .444410.1

5、总则 .4410.2字典模板 .4510.3单据模板 .4510.4查询模板 .451111其他规则及建议其他规则及建议 .46461 1 导言导言1.11.1 目的目的本文档是为基于 Microsoft公司的 Visual Studio .Net - C#.Net 系列开发工具进行软件开发的一个规范性文件。其目的是:保证软件开发过程中有一个统一的标准可以进行参照:包括类库、公共接口、设计模式、命名规范等。能够合理的使用公用资源1.21.2 适用范围适用范围本文档主要是基于目前三层架构开发模式中的 SmartClient 方式进行描述的,并同样适合于传统的三层架构:A 术语定义术语定义可访问性

6、修饰符:public(公有) 、internal(内部公有) 、proected(受保护)、protected internal(受保护或内部公有) 、private(私有) 。在此约定好中英文对照名称。非私有包括:公有、内部公有、受保护、受保护或内部公有。1.41.4 参考资料参考资料1. C# Language Specification1.2.doc2. C# Language Specification 2.0.doc1.51.5 版本更新记录版本更新记录版本/修订版修改确认日期修改内容概述起草人审核人备注1.02003-10初始版本鞠强曲丽君2.02008-03代码风格章节调整命名规

7、范细化样式调整孙立新2 2 使用的开发工具:使用的开发工具:Microsoft Visual Studio .Net 2005 - C#.Net3 3 程序源代码风格定义程序源代码风格定义源代码风格规范是在编写源代码文件时,对于书写格式和规则的统一要求。编写源代码最基本的目标是能够经过编译生成可执行程序。此外,源代码的另一个主要目标是为了阅读,源代码不仅仅是为了编译器能够读懂,同时也是为了人能够读懂,且易于读懂。这就如写文章的句读、段落、章节等类似,如果没有一种良好的书写风格和习惯,不仅仅会使写出的文章难以阅读,而且可能会造成不少曲解。有句话叫“文如其人” ,代码也同样是“文如其人” 。此外,

8、作为一个协作密切的开发团队,非常有必要保持一致的代码书写风格,它有助于团队开发保持高效(沟通交流、代码阅读、工作交接、工作延续性等方面) 。3.13.1代码结构风格代码结构风格对于每一个代码文件(*.cs) ,它的内容分为如下两个部分: 使用的命名空间 类型定义使用的命名空间,要求必须都声明在代码文件的最前方。建议.net framework 中定义的命名空间放在最上面,然后根据与当前代码关系的远近依次排列,对于引用的命名空间,按照引用来源分段列示,段与段之间用空行分隔。示例图如下:using System;using System.Collections;using System.Colle

9、ctions.Generic;using DevExpress.XtraTreeList;using DevExpress.XtraTreeList.Nodes;using Genersoft.Platform.Core.Common;using Genersoft.Platform.Core.Error;3-1 使用的命名空间代码示例在类型定义部分,一个代码文件原则上只包含一个如下类型的定义:类、接口、结构、枚举。这样有利于构造出条理清晰的代码文件结构,一目了然。对于委托的定义,可考虑在一个代码文件中集中定义内聚度较高的一类枚举。对于类的定义,按照一下顺序定义: 常量 字段 构造函数 析构函

10、数 属性 方法 事件所有的类成员必须显式的声明访问修饰限定符(public、internal、protected、private) 。为使类型具有良好的封装性,其中字段类型只能声明为 private。对于接口和结构体定义,其成员声明顺序与类定义相同。每行代码只允许写一条语句。每行代码写多条语句往往会造成调试定位、注释以及阅读的困难。3.23.2注释风格注释风格传统的注释风格:单行注释符号“/”和多行注释符号“/* */”在 C#中依然可以使用。在.NET 中,提供了额外的 XML 文档注释标记(Tags for Documentation Comments) 。.1单行注释单行

11、注释单行注释,即形式为“/”的注释。单行注释用于方法内的代码注释。如对局部变量声明的注释或代码行、代码段的注释。单行注释可单独一行,如果仅仅针对一句注释,且不影响换行,可放于代码行后部。单行注释也可以用于临时屏蔽不用的代码行,在开发完毕后应及时清理。特殊的,单行注释用于代码文件声明的注释,见代码文件注释。.2多行注释多行注释多行注释,即形式为“/* */”的注释。一般的,不建议在代码中使用多行注释。多行注释可用于临时屏蔽不用的代码行,在开发完毕后应及时清理。.3文档型注释文档型注释文档型注释,即 XML 文档注释标记(Tags for Documentation

12、 Comments) ,该类注释是.Net 定义的 Xml 标签,在声明接口、类、方法、属性、字段都应该使用该类注释,除了在阅读代码时了解代码语义之外,可通过该类注释生成代码类库的帮助文档(*.chm) 。这些标记包括如下表的全部内容:文档标签文档标签用法示意用法示意功能说明功能说明descriptiondescription:对象的摘要。应当用于描述类型成员。使用 以提供有关类型本身的信息。descriptionname:方法参数名。description:参数的说明。应当用于方法声明的注释中,以描述方法的一个参数。 name:引用的参数名。 标记为您提供了一种指示词为参数的方法。可以处理

13、XML 文件,从而用某种独特的方法格式化该参数。descriptionmember:对可从当前编译环境中获取的异常的引用。编译器检查到给定异常存在后,将 member 转换为输出 XML 中的规范化元素名。 标记使您可以指定类能够引发的异常。description:异常使用条件说明。 descriptionDescription:返回值的说明。 标记应当用于方法声明的注释,以描述返回值。cref = member:对可以通过当前编译环境进行调用的成员或字段的引用。编译器检查到给定代码元素存在后,将 member 传递给输出 XML 中的元素名。使您得以从文本内指定链接。使用 指示希望在“请参阅

14、”一节中出现的文本。cref = member:对可以通过当前编译环境进行调用的成员或字段的引用。编译器检查到给定代码元素存在后,将 member 传递给输出 XML 中的元素名。使您得以指定希望在“请参阅”一节中出现的文本。使用 从文本descriptiondescription:代码示例。使用 标记可以指定使用方法或其他库成员的示例。一般情况下,这将涉及到 标记的使用。ctext text:指示为代码的文本。为您提供了一种将说明中的文本标记为代码的方法。使用 将多行指示为代码contentcontent:标记为代码段的文本。 记为您提供了一种将多行指示为代码的方法。使用 指示应将说明中的文

15、本标记为代码 property-descriptionproperty-description :属性取值的说明。 标记使您得以描述属性。请注意,当在 Visual Studio .NET 开发环境中通过代码向导添加属性时,它将会为新属性添加 标记。然后,应该手动添加 标记以描述该属性所表示的值。contentContent:段落文本。用于诸如 或 等标记内,使您得以将结构添加到文本中。filename 包含文档的文件名。该文件名可用路径加以限定。将 filename 括在单引号中 ( )。 Tagpath:filename 中指向标记名的标记路径。将此路径括在单引号中 ( )。 name 注

16、释前边的标记中的名称说明符;名称具有一个 id。 id 标记使您得以引用描述源代码中类型和成员的另一文件中的注释。这是除了将文档注释直接置于源代码文件中之外的另一种可选方法。 标记使用 XML XPath 语法。有关自定义 使用的方法,请参阅 XPath 文档。位于注释之前的标记的 id。将此 id 括在双引号中 ( )。 term description term description term :定义的项,该项将在 text 中定义。 description:目符号列表或编号列表中的项或者 term 的定义。 块用于定义表或定义列表中的标题行。定义表时,只需为标题中的项提供一个项。列表中

17、的每一项用 块指定。创建定义列表时,既需要指定 term 也需要指定 text。但是,对于表、项目符号列表或编号列表,只需为 text 提供一个项。列表或表所拥有的 块数可以根据需要而定。descriptioncref = member 对可以通过当前编译环境进行调用的成员或字段的引用。编译器检查到给定代码元素存在后,将 member 转换为输出 XML 中的规范化元素名。必须将 member 括在双引号 ( ) 中。 description 成员的访问的说明。 标记使您得以将成员的访问记入文档。System.Security.PermissionSetSystem.Security.Perm

18、issionSet 使您得以指定对成员的访问。descriptiondescription:备注说明。 标记是可以描述有关类或其他类型的备注概述信息。.4注释规范注释规范 代码文件注释代码文件注释对于每一个代码文件(*.cs) ,在文件起始位置添加注释,用以声明该代码文件的用途、版本修订历史、作者、创建日期以及版权声明等信息。/ =/ 浪潮GS产品/ 功能用途定义。/ 请查看GS开发文档来了解关于此类型的更多信息。/ =/ 日期 版本修改人 描述/ =/ 作者/ 日期/ 浪潮集团山东通用软件有限公司版权所有。保留所有权利。/ =3-2 代码文件注释示例3.2.4.

19、2 类型定义注释类型定义注释在类型定义时,需要添加该类型的功能用途说明的注释。用途说明应为阅读者介绍该类型提供的主要功能,并向使用者介绍该类使用时需要了解的知识,不要泛泛而谈,内容空洞,应付了事。使用“”标签,内部可根据需要添加适当的标签,以便更清楚的表达。/ / 安全管理服务调用接口工厂。用于为调用者创建。/ 根据配置文件的SecurityClientConfiguration小节定义的配置信息,创建相应的服务实现。/ 若调用的是SecurityClientFactory.GetClient()方法,是获取小节中的UsingClient属性指定的服务实现。/ public static cl

20、ass SecurityClientFactory 3-3 类型定义注释示例生成的类库文档样式示例: 成员声明注释成员声明注释在类的内部,对于成员的声明,注释应能够说明成员的功能用途,如果成员带有参数和返回值,应说明相应的含义。功能用途使用“”标签。参数使用“”标签,返回值使用“”标签,另可根据成员的的调用应注意的问题和相关知识进行说明,可采用“” 标签进行备注说明,采用“” 标签提供编程 Demo。示例如下:/ / 获取指定配置的安全管理服务调用接口。/ / 配置标识。对应于配置项中的Code属性。/ 安全管理服务调用接口。/ 如果是程序识别的错误,将会抛出该类型的异常。/ /

21、 当前程序已经提供了三种服务调用实现,分别是:“本地调用(Local)”、“Web服务调用(WS)”、“Remoting调用(Remoting)”。/ / / ISecurityServiceClient serviceClient = / SecurityClientFactory.GetClient(SecurityClientFactory.WebService);/ public static ISecurityServiceClient GetClient(string configID) 3-5 类型定义注释代码示例生成的类库文档样式示例:3-4 类型定义注释生成文档样式示例3-6

22、 类型定义注释生成文档样式示例 代码段注释代码段注释位于属性方法、成员方法内部代码实现,一般使用单行注释形式。示例如下:/ 检查输入有效性if (user = null) throw new SecurityException(SecurityError.NullUser);if (this.IsUserCodeInUsing(user.Id, user.Code) = true) / 若编号已经被其他用户使用 throw new SecurityException(SecurityError.UserCodeExist, ErrorLevel.Warning);/ 获取事件代理

23、,发出用户将被修改的事件ServiceManager.GetSecurityEventBroker().FireUserModifying(user);/ 持久化存取接口IUserRepository repository = this.GetRepository();3-7 代码段注释代码示例3.33.3 代码书写风格代码书写风格以下是经常使用到的一些代码格式要求:.1缩进缩进缩进是通过在每一行代码的前端添加一定数量的显示为空白的符号,在显示上区分出代码行之间的层次关系。一个缩进单位是 4 个空格符(不要直接使用 Tab 字符,VS.Net 设置:工具-选项-文本编辑器-C#

24、-制表符-插入空格) 。同一语法层级的多行语句要使用统一的缩进单位。在命名空间、类型定义、属性方法定义、分支循环定义等表达嵌套包含关系时要使用一个缩进单位。如果一条语句超过一行,从第二行开始要使用一个缩进单位。.2空行空行空行是在代码中添加的只包含回车换行符的空白行。空行可以根据代码行在语法、逻辑上的相关性或内聚度分隔成多个代码块,从而提高代码的可阅读性。在使用命名空间与类型定义之间要添加一个空行。如果在同一代码文件中声明了不同的类型,则在不同的类型定义之间要添加一个空行。在类型的成员定义之间要添加一个空行(字段之间可没有) ,具体如下:1. 方法、属性成员之间。2. 属性与字

25、段、方法与字段之间。3. #region、#endregion 与其他代码行之间。在一个方法内部(构造函数、属性方法、成员方法等):1. 方法中变量声明与语句之间。2. 方法中的多个逻辑步骤之间。3. 方法中的返回语句与其他的语句之间。注释与它注释的代码行之间不空行,但与其他的代码行之间空一行。没有特殊原因,不允许出现连续空行。.3换行换行如果一条语句过长(超过了 80 个字符,或者超过代码编辑窗口的显示宽度),会造成语句阅读上的困难,必须对这条语句进行换行。换行要遵守缩进的要求。换行的位置的选择,尽量选择在操作符(“=” 、 “&” 、 “|” 、 “,”等)之后,不

26、破坏代码的连贯性,易于理解。SomeBlockEventBroker broker = ServiceManager.GetSomeBlockEventBroker()if (info.HitTest = GridHitTest.RowCell | info.HitTest = GridHitTest.RowIndicator) this.DoSomething();return string.Format(SELECT 1 FROM 0 WHERE 1 = 2, this.Table, this.PrimaryKey, obj.Id);3-8 换行示例.4空格空格空格即空格符

27、。如果代码行中的表达式字符之间没有空格,会显得代码很密集、局促,也不好阅读。添加适量的空格,可有效缓解这种情况。在双目、三目运算符和操作数之间要添加空格。在左括号“(”与关键字之间要添加空格。在参数(形参和实参)的多个参数之间要添加空格。在类型之间的继承、实现关系的“:”左右两侧要添加空格。在构造函数的继承的“:”左右两侧要添加空格。不要使用连续多个空格(缩进不在讨论范围内) 。.5花括号花括号花括号单独占一行。左花括号“”与上方相邻语句左对齐,保持同一缩进。右花括号“” 与左花括号 “”对齐,保持同一缩进。4 4 命名规范命名规范一致的命名模式是托管类库中可预知性与可发现性最

28、重要的元素之一。对这些命名规范广泛的使用和理解将消除许多最常见的用户问题。本文提供 .NET Framework 类型的命名规范。对于每个类型,还应该注意关于大写样式、区分大小写和措词的一些通用规则。4.14.1大小写大小写规则规则 使用下面的三种标识符约定: Pascal 大小写规则将标识符的首字母和后面连接的每个单词的首字母都大写。可以对三字符或更多字符的标识符使用 Pascal 大小写。例如:B BackC Color Camel 大小写规则标识符的首字母小写,而每个后面连接的单词的首字母都大写。例如:b backC Color 大写规则标识符中的所有字母都大写。仅对于由两个或者更少字母

29、组成的标识符使用该约定。例如:System.IOIO、System.Web.UIUI可能还必须大写标识符以维持与现有非托管符号方案的兼容性,在该方案中所有大写字母经常用于枚举和常数值。一般情况下,在使用它们的程序集之外这些字符应当是不可见的。下表汇总了大写规则,并提供了不同类型的标识符的示例。标识符标识符大小写规则大小写规则示例示例命名空间PascalSystem.Drawing类PascalAppDomain接口PascalIDisposable 注:总是以注:总是以 I I 前缀开始。前缀开始。枚举类型PascalErrorLevel枚举值PascalFatalError委托PascalM

30、ouseDownEventHandler私有的常量CamelfileType非私有的常量PascalFileType只读的静态字段PascalRedValue私有的静态字段CamelserviceInstance非私有的静态字段PascalConfigID注:不建议使用,应使用静态属性。注:不建议使用,应使用静态属性。私有实例字段Camelstring code;非私有的实例字段PascalRedValue 注:不建议使用,应使用属性。注:不建议使用,应使用属性。属性PascalBackColor方法PascalToString方法参数CameltypeName局部变量Camelint ind

31、ex = 0;事件PascalMouseDown4.24.2区分大小写区分大小写 为了避免混淆和保证跨语言交互操作,请遵循有关区分大小写的使用的下列规则: 1. 不要使用要求区分大小写的名称。对于区分大小写和不区分大小写的语言,组件都必须完全可以使用。不区分大小写的语言无法区分同一上下文中仅大小写不同的两个名称。因此,在创建的组件或类中必须避免这种情况。 2. 不要创建仅是名称大小写有区别的两个命名空间。例如不区分大小写的语言无法区分以下两个命名空间声明:namespace ee.cummings;namespace Ee.Cummings;3. 不要创建具有仅是大小写有区别的参数名称的函数。

32、下面的示例是不正确的。 void MyFunction(string a, string A)4. 不要创建具有仅是大小写有区别的类型名称的命名空间。在下面的示例中,PointPoint p p 和 POINTPOINT p p 是不适当的类型名称,原因是它们仅在大小写方面有区别。 例如:System.Windows.Forms.Point pSystem.Windows.Forms.POINT p5. 不要创建具有仅是大小写有区别的属性名称的类型。在下面的示例中,int Color 和 int COLOR 是不适当的属性名称,原因是它们仅在大小写方面有区别。 例如:int Color get

33、, setint COLOR get, set6. 不要创建具有仅是大小写有区别的方法名称的类型。在下面的示例中,calculate 和 Calculate 是不适当的方法名称,原因是它们仅在大小写方面有区别。 例如:void calculate()void Calculate()4.34.3缩写缩写 为了避免混淆和保证跨语言交互操作,区分缩写使用下列规则: 1. 不要将缩写或缩略形式用作标识符名称的组成部分。例如,使用 GetWindow,而不要使用 GetWin。 2. 不要使用计算机领域中未被普遍接受的缩写。 3. 在适当的时候,使用众所周知的缩写替换冗长的词组名称。例如,用 UI 作为

34、 User Interface 的缩写;用 OLAP 作为 On-line Analytical Processing 的缩写。 4. 在使用缩写时,对于超过两个字符长度的缩写,使用 Pascal 大小写或 Camel 大小写。例如,使用 HtmlButton 或 htmlButton。但是,应当大写仅有两个字符的缩写,如,System.IO,而不是 System.Io。 5. 不要在标识符或参数名称中使用缩写。如果必须使用缩写,对于由多于两个字符所组成的缩写请使用 Camel 大小写,虽然这和单词的标准缩写相冲突。4.44.4措词措词 避免使用与常用的 .NET Framework 命名空间

35、重复的类名称。例如,不要将以下任何名称用作类名称:System、Collections、Forms 或 UI。有关 .NET Framework 命名空间的列表,请参见类库。另外,避免使用与以下关键字冲突的标识符:CStrCTypeDateDecimalDeclareDefaultDelegateDimDoDoubleEachElseElseIfEndEnumEraseErrorEventExitExternalSourceFALSEFinalizeFinally FloatForFriendFunctionGetGetTypeGotoHandlesIfImplementsImportsInI

36、nheritsIntegerInterfaceIsLetLibLikeLongLoop MeModModuleMustInheritMustOverrideMyBaseMyClassNamespaceNewNextNotNothingNotInheritableNotOverridableObjectOnOptionOptionalOrOverloadsOverridableOverridesParamArrayPreservePrivatePropertyProtectedPublicRaiseEventReadOnlyReDimRegionREMRemoveHandlerResumeRet

37、urnSelectSetShadowsSharedShortSingleStaticStepStopStringStructureSubSyncLockThenThrowToTRUETryTypeOfUnicodeUntilvolatileWhenWhileWithWithEventsWriteOnlyXorevalextendsinstanceofpackagevar 4.54.5避免类型名称混淆避免类型名称混淆不同的编程语言使用不同的术语标识基本托管类型。类库设计人员必须避免使用语言特定的术语。请遵循本节中描述的规则以避免类型名称混淆。使用描述类型的含义的名称,而不是描述类型的名称。如果参

38、数除了其类型之外没有任何语义含义,那么在这种罕见的情况下请使用一般性名称。例如,支持将各种数据类型写入到流中的类可以有以下方法。 C#void Write(double value);void Write(float value);void Write(long value);void Write(int value);void Write(short value);不要创建语言特定的方法名称,如下面的示例所示。 C#void Write(double doubleValue);void Write(float floatValue);void Write(long longValue);vo

39、id Write(int intValue);void Write(short shortValue);下表列出基本数据类型名称和它们的通用替换。C#C# 类型类型名称名称VisualVisual BasicBasic 类类型名称型名称JScriptJScript 类型名称类型名称VisualVisual C+C+ 类型类型名称名称 表表示形式示形式通用类型通用类型名称名称sbyteSBytesBytecharint8SBytebyteBytebyteunsigned charunsigned int8ByteshortShortshortshortint16Int16ushortUInt16

40、ushortunsigned shortunsigned int16UInt16intIntegerintintint32Int32uintUInt32uintunsigned intunsigned int32UInt32longLonglong_int64int64Int64ulongUInt64ulongunsigned _int64unsigned int64UInt64floatSinglefloatfloatfloat32SingledoubleDoubledoubledoublefloat64DoubleboolBooleanbooleanboolboolBooleancharC

41、harcharwchar_tcharCharstringStringstringStringstringStringobjectObjectobjectObjectobjectObject例如,支持将从流读取各种数据类型的类可以有以下方法。C#double ReadDouble();float ReadSingle();long ReadInt64();int ReadInt32();short ReadInt16();上面的示例优先于下面的语言特定的替代方法。C#double ReadDouble();float ReadFloat();long ReadLong();int ReadInt

42、();short ReadShort();4.64.6命名空间命名规范命名空间命名规范 命名命名空间时的一般性规则是使用公司名称,后跟技术名称和可选的功能与设计,如下所示。CompanyName.TechnologyName.Feature.DesignCompanyName.TechnologyName.Feature.Design例如:Microsoft.MediaMicrosoft.Media.Design给命名空间名称加上公司名称或者其他知名商标的前缀可以避免两个已经发布的命名空间名称相同的可能性。例如,Microsoft.Office 是由 Microsoft 提供的 Office

43、Automation Classes 的一个适当的前缀。在第二级分层名称上使用稳定的、公认的技术名称。将组织层次架构用作命名空间层次架构的基础。命名一个命名空间,该命名空间包含为具有 .Design 后缀的基命名空间提供设计时功能的类型。例如,System.Windows.Forms.Design 命名空间包含用于设计基于 System.Windows.Forms 的应用程序的设计器和相关的类。嵌套的命名空间应当在包含它的命名空间中的类型上有依赖项。例如,System.Web.UI.Design 中的类依赖于 System.Web.UI 中的类。但是,System.Web.UISystem.W

44、eb.UI 中的类不依赖于 System.Web.UI.DesignSystem.Web.UI.Design 中的类。应当对命名空间使用 Pascal 大小写,并用句点分隔逻辑组件,如 Microsoft.Office.PowerPoint 中所示。如果您的商标使用非传统的大小写,请遵循您的商标所定义的大小写。如果在语义上适当,使用复数命名空间名称。例如,使用 System.Collections 而不是 System.Collection。此规则的例外是商标名称和缩写。例如,使用 System.IO 而不是 System.IOs。不要为命名空间和类使用相同的名称。例如,不要既提供 Debug

45、 命名空间也提供 Debug 类。最后,请注意命名空间名称不必非得与程序集名称相似。例如,如果命名程序集 MyCompany.MyTechnology.dll,它没有必要非得包含 MyCompany.MyTechnology 命名空间。规定公司内产品或项目,适用的命名空间的原则是:Genersoft.Genersoft.产品产品/ /项目名称项目名称. .模块标识模块标识4.74.7类命名规范类命名规范 以下规则概述命名类的规范: 1. 使用名词或名词短语命名类。 2. 使用 Pascal 大小写规则。 3. 少用缩写。 4. 不要使用类型前缀,如在类名称上对类使用 C 前缀。例如,使用类名称

46、 FileStream,而不是 CFileStream。 5. 不要使用下划线字符 (_)。 6. 有时候需要提供以字母 I 开始的类名称,虽然该类不是接口。只要 I 是作为类名称组成部分的整个单词的第一个字母,这便是适当的。例如,类名称 IdentityStore 就是适当的。 7. 在适当的地方,使用复合单词命名派生的类。派生类名称的第二个部分应当是基类的名称。例如,ApplicationException 对于从名为 Exception 的类派生的类是适当的名称,原因是 ApplicationException 是一种 Exception。请在应用该规则时进行合理的判断。例如,Butto

47、n 对于从 Control 派生的类是适当的名称。尽管按钮是一种控件,但是将 Control 作为类名称的一部分将使名称不必要地加长。 下面是正确命名的类的示例:C#public class FileStreampublic class Buttonpublic class String4.84.8接口命名规范接口命名规范 以下规则概述接口的命名规范: 1. 用名词或名词短语,或者描述行为的形容词命名接口。例如,接口名称 IComponent 使用描述性名词。接口名称 ICustomAttributeProvider 使用名词短语。名称 IPersistable 使用形容词。 2. 使用 Pa

48、scal 大小写规则。 3. 少用缩写。 4. 接口名称加上字母 I 前缀,以指示该类型为接口。 5. 在定义类/接口对(其中类是接口的标准实现)时使用相似的名称。两个名称的区别应该只是接口名称上有字母 I 前缀。 6. 不要使用下划线字符 (_)。 以下是正确命名的接口的示例。C#public interface IServiceProviderpublic interface IFormatable以下代码示例阐释如何定义 IComponent 接口及其标准实现 Component 类。C#public interface IComponent / Implementation code

49、goes here.public class Component: IComponent / Implementation code goes here.4.94.9枚举命名规范枚举命名规范 枚举 (Enum) 值类型从 Enum 类继承。以下规则概述枚举的命名规范: 1. 对于枚举类型和枚举值名称使用 Pascal 大小写规则。 2. 少用缩写。 3. 不要在枚举类型名称上使用 Enum 后缀。 4. 对大多数枚举类型使用单数名称,但是对作为位域的枚举类型使用复数名称。 5. 总是将 FlagsAttribute 添加到位域枚举类型。 4.104.10 委托命名规范委托命名规范以下规则概述委

50、托的命名规范: 1. 使用 Pascal 大小写。 2. 不要使用匈牙利命名法。 3. 对委托处理程序名称使用 EventHandler 后缀。 4. 指定两个名为 sender 和 e 的参数。sender 参数表示引发事件的对象。sender 参数始终是 object 类型的,即使在可以使用更为特定的类型时也如此。与事件相关联的状态封装在名为 e 的事件类的实例中。对 e 参数类型使用适当而特定的事件类。 5. 用 EventArgs 后缀命名事件参数类。 6. 建议用主谓短语或动词来命名委托。例如: MouseClickEventHandler。 7. 使用动词运行时文法(动词的“ing

51、”形式)表示“将要发生”含义的委托称,用过去式表示“已发生” 含义的委托名称。例如,可以取消的 Close 委托应当具有 ClosingEventHandler 和 ClosedEventHandler 两个委托。不要使用 BeforeXxxEventHandler 或 AfterXxxEventHandler 命名模式。 8. 不要在委托名称中使用前缀或者后缀。例如,使用 CloseEventHandler,而不要使用 OnOnCloseEventHandler。 以下示例阐释具有适当名称和参数的事件处理程序:C#public delegate void MouseDownEventHand

52、ler(object sender, MouseEventArgs e);以下示例阐释正确命名的事件参数类:C#public class MouseEventArgs : EventArgs int x; int y; public MouseEventArgs(int x, int y) this.x = x; this.y = y; public int X get return x; public int Y get return y; 4.114.11 常量字段命名规范常量字段命名规范 以下规则概述静态字段的命名规范: 1. 使用名词、名词短语或者名词的缩写命名常量字段。 2. 使用描

53、述性名称,且名称应含义清晰,不要使用描述其类型的名称。 3. 私有常量字段使用 Camel 大小写规则。4. 非私有的常量字段使用 Pascal 大小写规则。5. 不要在常量字段名称中使用匈牙利命名法的前缀。 4.124.12 静态字段命名规范静态字段命名规范 以下规则概述静态字段的命名规范: 1. 使用名词、名词短语或者名词的缩写命名静态字段。 2. 使用描述性名称,且名称应含义清晰,不要使用描述其类型的名称。 3. 私有静态字段使用 Camel 大小写规则。 4. 常量静态字段使用 Pascal 大小写规则。5. 非私有的静态字段使用 Pascal 大小写规则。应使用静态属性提供外部访问,

54、不建议暴露外部可访问的静态字段。6. 不要在静态字段名称中使用匈牙利命名法的前缀。4.134.13 实例字段命名规范实例字段命名规范 以下规则概述实例字段的命名规范: 1. 对私有实例字段使用 Camel 大小写规则。 2. 使用描述性名称,且名称应含义清晰,不要使用描述其类型的名称。 3. 不要给实例字段加匈牙利命名法的前缀。 4. 非私有的实例字段使用 Pascal 大小写规则。应使用实例属性提供外部访问,不建议暴露外部可访问的实例字段。以下是正确命名的实例字段的示例:C#string displayName;List children;4.144.14 属性命名规范属性命名规范 以下规则

55、概述属性的命名规范: 1. 使用名词或名词短语命名属性。 2. 使用描述性名称,且名称应含义清晰,不要使用描述其类型的名称。 3. 使用 Pascal 大小写规则。 4. 不要使用匈牙利命名法。 5. 考虑用与属性的基础类型相同的名称创建属性。例如,如果声明名为 Color 的属性,则属性的类型同样应该是 Color。以下代码示例阐释正确的属性命名:C#public class SampleClass public Color BackColor / Code for Get and Set accessors goes here. 以下代码示例阐释提供其名称与类型相同的属性:C#public

56、 enum Color / Insert code for Enum here.public class Control public Color Color get / Insert code here. set / Insert code here. 以下代码示例不正确,原因是 Color 属性是 Integer 类型的:C#public enum Color / Insert code for Enum here.public class Control public int Color get / Insert code here. set / Insert code here. 在不

57、正确的示例中,不可能引用 Color 枚举的成员。Color.Xxx 将被解释为访问一个成员,该成员首先获取 Color 属性(在 Visual Basic 中为 Integer 类型,在 C# 中为 int 类型)的值,然后再访问该值的某个成员(该成员必须是 System.Int32 的实例成员)。4.154.15 方法命名规范方法命名规范 以下规则概述方法的命名规范: 1. 使用动词或动词短语命名方法。 2. 使用 Pascal 大小写规则。 以下是正确命名的方法的示例:RemoveAll()GetCharArray()Invoke()4.164.16 方法参数命名规范方法参数命名规范 必

58、须仔细遵守这些方法参数的命名规范,这非常重要,因为提供上下文相关帮助和类浏览功能的可视化设计工具会在设计器中对用户显示方法参数名称。以下规则概述方法参数的命名规范: 1. 对方法参数名称使用 Camel 大小写规则。 2. 使用描述性名称,且名称应含义清晰,不要使用描述其类型的名称。 3. 不要给方法参数名称加匈牙利命名法的前缀。 以下是正确命名的方法参数的示例:C#Type GetType(string typeName)string Format(string format, object args)4.174.17 局部变量命名规范局部变量命名规范 以下规则概述局部变量的命名规范: 1.

59、 对局部变量使用 Camel 大小写规则。 2. 使用描述性名称,且名称应含义清晰,不要使用描述其类型的名称。 3. 不要给局部变量加匈牙利命名法的前缀。 以下是正确命名的局部变量的示例:C#int index = 0;string querySql = select ;4.184.18 事件命名规范事件命名规范事件往往和其委托的名称一致,只是去掉了“EventHandler”后缀。以下规则概述事件的命名规范: 1. 使用 Pascal 大小写2. 不要使用匈牙利命名法。 3. 建议使用主谓短语或动词来命名事件。例如,MouseClick 或 Click。 4. 使用动词运行时文法(动词的“i

60、ng”形式)表示“将要发生”含义的事件名称,用过去式表示“已发生” 含义的事件名称。例如,可以取消的 Close 事件应当具有 Closing 事件和 Closed 事件。不要使用BeforeXxx 或 AfterXxx 命名模式。 5. 不要在事件声明上使用前缀或者后缀。例如,使用 Close,而不要使用 OnClose。通常情况下,对于可以在派生类中重写的事件,应在类型上提供一个受保护的方法(称为 OnXxx) 。此方法只应具有事件参数 e,因为发送方总是类型的实例。 以下示例阐释具有适当名称和参数的事件处理程序:C#public delegate void MouseDownEventHandl

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论