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

下载本文档

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

文档简介

密级:秘密 开开 发发 人人 员员 手手 册册 -VS.NET-VS.NET 开发规范篇开发规范篇 文档最后修订者及日期: 孙立新 2009-3-16 本版文件批准人及日期: 浪潮集团山东通用软件有限公司 目录目录 1 1导言导言5 5 1.1目的.5 1.2适用范围.5 1.3术语定义.5 1.4参考资料.5 1.5版本更新记录.5 2 2使用的开发工具:使用的开发工具:6 6 3 3程序源代码风格定义程序源代码风格定义6 6 3.1代码结构风格.6 3.2注释风格.7 3.2.1单行注释8 3.2.2多行注释8 3.2.3文档型注释8 3.2.4文档型注释规范11 3.3代码书写风格.14 3.3.1缩进14 3.3.2空行14 3.3.3换行15 3.3.4空格15 3.3.5花括号16 4 4命名规范命名规范1616 4.1大写规则.16 4.2区分大小写.17 4.3缩写.18 4.4措词.19 4.5避免类型名称混淆.20 4.6命名空间命名规范.22 4.7类命名规范.23 4.8接口命名规范.24 4.9属性命名规范.25 4.10枚举类型命名规范 25 4.11静态字段命名规范 25 4.12参数命名规范 26 4.13方法命名规范 26 4.14属性命名规范 26 4.15事件命名规范 28 4.16数据库对象命名规范 29 4.16.1数据库名(开发过程中)29 4.16.2数据库表29 4.16.3字段30 4.16.4存储过程命名约定31 4.16.5触发器(插入,更新,删除)命名约定31 4.16.6视图命名约定31 4.16.7自定义数据类型命名约定31 4.16.8自定义函数命名约定32 4.17数据库表结构设计规范 33 4.18数据库存储过程编写规范 34 5 5界面规范界面规范3434 5.1总则.34 5.2遵从原则.34 5.3色彩搭配.35 5.4屏幕大小.35 5.5主控页面.35 5.5.1主页:登录窗口35 5.5.2主操作页分成三个区域:标题菜单区、系统管理区、操作区36 5.5.3浏览器36 5.6各种页面模板应用的场景.37 5.6.1字典类37 5.6.2单据类38 5.6.3管理类39 5.6.4索引类40 5.6.5Tab 页类.40 5.6.6响应式窗口类40 5.6.7查询结果/报表类.40 6 6提示信息规范提示信息规范4141 6.1总则.41 6.2提示信息.41 7 7热键定义、帮助及使用规范热键定义、帮助及使用规范4141 7.1总则.41 7.2规范.41 8 8单元测试规范(从开发人员角度)单元测试规范(从开发人员角度)4242 8.1总则.42 8.2测试规范.42 9 9配置管理规范(从开发人员角度)配置管理规范(从开发人员角度)4343 9.1总则.43 9.2开发前的准备.43 9.3开发过程中的规则.44 1010程序模板程序模板 4444 10.1总则 44 10.2字典模板 45 10.3单据模板 45 10.4查询模板 45 1111其他规则及建议其他规则及建议 4646 1 1 导言导言 1.11.1 目的目的 本文档是为基于 Microsoft公司的 Visual Studio .Net - C#.Net 系列 开发工具进行软件开发的一个规范性文件。其目的是: 保证软件开发过程中有一个统一的标准可以进行参照:包括类库、公 共接口、设计模式、命名规范等。 能够合理的使用公用资源 1.21.2 适用范围适用范围 本文档主要是基于目前三层架构开发模式中的 SmartClient 方式进行描述 的,并同样适合于传统的三层架构: A/BusinessIntegration/Database。 1.31.3 术语定义术语定义 可访问性修饰符:public(公有) 、internal(内部公有) 、proected(受保护) 、protected internal(受保护或内部公有) 、private(私有) 。在此约定好中英文 对照名称。 非私有包括:公有、内部公有、受保护、受保护或内部公有。 1.41.4 参考资料参考资料 1. C# Language Specification1.2.doc 2. C# Language Specification 2.0.doc 1.51.5 版本更新记录版本更新记录 版本/修 订版 修改确认 日期 修改内容概述起草人审核人备注 1.02003-10 初始版本鞠强曲丽君 2.02008-03 代码风格章节调整 命名规范细化 样式调整 孙立新 2 2 使用的开发工具:使用的开发工具: Microsoft Visual Studio .Net 2005 - C#.Net 3 3 程序源代码风格定义程序源代码风格定义 源代码风格规范是在编写源代码文件时,对于书写格式和规则的统一要求。 编写源代码最基本的目标是能够经过编译生成可执行程序。此外,源代码 的另一个主要目标是为了阅读,源代码不仅仅是为了编译器能够读懂,同时也 是为了人能够读懂,且易于读懂。这就如写文章的句读、段落、章节等类似, 如果没有一种良好的书写风格和习惯,不仅仅会使写出的文章难以阅读,而且 可能会造成不少曲解。有句话叫“文如其人” ,代码也同样是“文如其人” 。 此外,作为一个协作密切的开发团队,非常有必要保持一致的代码书写风 格,它有助于团队开发保持高效(沟通交流、代码阅读、工作交接、工作延续 性等方面) 。 3.13.1代码结构风格代码结构风格 对于每一个代码文件(*.cs) ,它的内容分为如下两个部分: 使用的命名空间 类型定义 使用的命名空间,要求必须都声明在代码文件的最前方。建议.net framework 中定义的命名空间放在最上面,然后根据与当前代码关系的远近依 次排列,对于引用的命名空间,按照引用来源分段列示,段与段之间用空行分 隔。示例图如下: using System; using System.Collections; using System.Collections.Generic; using DevExpress.XtraTreeList; using DevExpress.XtraTreeList.Nodes; using Genersoft.Platform.Core.Common; using Genersoft.Platform.Core.Error; 3-1 使用的命名空间代码示例 在类型定义部分,一个代码文件原则上只包含一个如下类型的定义:类、 接口、结构、枚举。这样有利于构造出条理清晰的代码文件结构,一目了然。 对于委托的定义,可考虑在一个代码文件中集中定义内聚度较高的一类枚举。 对于类的定义,按照一下顺序定义: 常量 字段 构造函数 析构函数 属性 方法 事件 所有的类成员必须显式的声明访问修饰限定符 (public、internal、protected、private) 。为使类型具有良好的封装性,其 中字段类型只能声明为 private。 对于接口和结构体定义,其成员声明顺序与类定义相同。 每行代码只允许写一条语句。每行代码写多条语句往往会造成调试定位、 注释以及阅读的困难。 3.23.2注释风格注释风格 传统的注释风格:单行注释符号“/”和多行注释符号“/* */”在 C#中 依然可以使用。在.NET 中,提供了额外的 XML 文档注释标记(Tags for Documentation Comments) 。 .1单行注释单行注释 单行注释,即形式为“/”的注释。单行注释用于方法内的代码注释。如 对局部变量声明的注释或代码行、代码段的注释。单行注释可单独一行,如果 仅仅针对一句注释,且不影响换行,可放于代码行后部。 单行注释也可以用于临时屏蔽不用的代码行,在开发完毕后应及时清理。 特殊的,单行注释用于代码文件声明的注释,见代码文件注释。 .2多行注释多行注释 多行注释,即形式为“/* */”的注释。一般的,不建议在代码中使用多行 注释。多行注释可用于临时屏蔽不用的代码行,在开发完毕后应及时清理。 .3文档型注释文档型注释 文档型注释,即 XML 文档注释标记(Tags for Documentation Comments) , 该类注释是.Net 定义的 Xml 标签,在声明接口、类、方法、属性、字段都应该 使用该类注释,除了在阅读代码时了解代码语义之外,可通过该类注释生成代 码类库的帮助文档(*.chm) 。这些标记包括如下表的全部内容: 文档标签文档标签用法示意用法示意功能说明功能说明 description description:对象的摘要。 应当用于描述类型成员。使用 以提供有关类型本身 的信息。 description name:方法参数名。 description:参数的说明。 应当用于方法声明的注释中,以 描述方法的一个参数。 name:引用的参数名。 标记为您提供了一种 指示词为参数的方法。可以处理 XML 文件,从而用某种独特的方 法格式化该参数。 description member:对可从当前编译环境中获取的异常 的引用。编译器检查到给定异常存在后,将 member 转换为输出 XML 中的规范化元素名。 标记使您可以指定 类能够引发的异常。 description:异常使用条件说明。 description Description:返回值的说明。 标记应当用于方法声 明的注释,以描述返回值。 cref = “member“:对可以通过当前编译环 境进行调用的成员或字段的引用。编译器检 查到给定代码元素存在后,将 member 传递 给输出 XML 中的元素名。 使您得以从文本内指定链接。使 用 指示希望在“请参 阅”一节中出现的文本。 cref = “member“:对可以通过当前编译环 境进行调用的成员或字段的引用。编译器检 查到给定代码元素存在后,将 member 传递 给输出 XML 中的元素名。 使您得以指定希望在“请参阅” 一节中出现的文本。使用 从文本 description description:代码示例。 使用 标记可以指定使 用方法或其他库成员的示例。一 般情况下,这将涉及到 标记的使用。 ctext text:指示为代码的文本。 为您提供了一种将说明中的文本 标记为代码的方法。使用 将多行指示为代码 content content:标记为代码段的文本。 记为您提供了一种将多行指示为 代码的方法。使用 指示应将 说明中的文本标记为代码 property-description property-description :属性取值的说明。 标记使您得以描述属性。 请注意,当在 Visual Studio .NET 开发环境中通过代码向导添 加属性时,它将会为新属性添加 标记。然后,应该手 动添加 标记以描述该属 性所表示的值。 content Content:段落文本。 用于诸如 或 等标记内,使您得以 将结构添加到文本中。 filename 包含文档的文件名。该文件名可 用路径加以限定。将 filename 括在单引号 中 ( )。 Tagpath:filename 中指向标记名的标记路 径。将此路径括在单引号中 ( )。 name 注释前边的标记中的名称说明符;名 称具有一个 id。 id 标记使您得以引用描 述源代码中类型和成员的另一文 件中的注释。这是除了将文档注 释直接置于源代码文件中之外的 另一种可选方法。 标记使用 XML XPath 语法。有关自定义 使 用的方法,请参阅 XPath 文档。 位于注释之前的标记的 id。将此 id 括在 双引号中 (“ “)。 term description term description term :定义的项,该项将在 text 中定义。 description:目符号列表或编号列表中的 项或者 term 的定义。 块用于定义表或定 义列表中的标题行。定义表时, 只需为标题中的项提供一个项。 列表中的每一项用 块指 定。创建定义列表时,既需要指 定 term 也需要指定 text。但是, 对于表、项目符号列表或编号列 表,只需为 text 提供一个项。 列表或表所拥有的 块数 可以根据需要而定。 description cref = “member“ 对可以通过当前编译环境 进行调用的成员或字段的引用。编译器检查 到给定代码元素存在后,将 member 转换为 输出 XML 中的规范化元素名。必须将 member 括在双引号 (“ “) 中。 description 成员的访问的说明。 标记使您得以将成 员的访问记入文档。 System.Security.PermissionSetSystem.Security.PermissionSet 使您得以指定对成员的访问。 description description:备注说明。 标记是可以描述有关 类或其他类型的备注概述信息。 .4注释规范注释规范 代码文件注释代码文件注释 对于每一个代码文件(*.cs) ,在文件起始位置添加注释,用以声明该代码 文件的用途、版本修订历史、作者、创建日期以及版权声明等信息。 / = / 浪潮GS产品 / 功能用途定义。 / 请查看GS开发文档来了解关于此类型的更多信息。 / = / 日期 版本修改人 描述 / = / 作者 / 日期 / 浪潮集团山东通用软件有限公司版权所有。保留所有权利。 / = 3-2 代码文件注释示例 类型定义注释类型定义注释 在类型定义时,需要添加该类型的功能用途说明的注释。用途说明应为阅 读者介绍该类型提供的主要功能,并向使用者介绍该类使用时需要了解的知识, 不要泛泛而谈,内容空洞,应付了事。使用“”标签,内部可根据 需要添加适当的标签,以便更清楚的表达。 / / 安全管理服务调用接口工厂。用于为调用者创建。 / 根据配置文件的SecurityClientConfiguration小节定义的配置 信息,创建相应的服务实现。 / 若调用的是SecurityClientFactory.GetClient()方法,是获取小节中的 UsingClient属性指定的服务实现。 / public static class SecurityClientFactory 3-3 类型定义注释示例 生成的类库文档样式示例: 成员声明注释成员声明注释 在类的内部,对于成员的声明,注释应能够说明成员的功能用途,如果成 员带有参数和返回值,应说明相应的含义。功能用途使用“”标签。 参数使用“”标签,返回值使用“”标签,另可根据成员 的的调用应注意的问题和相关知识进行说明,可采用“” 标签进行 备注说明,采用“” 标签提供编程 Demo。示例如下: / / 获取指定配置的安全管理服务调用接口。 / / 配置标识。对应于配置项中的Code属性。 / 安全管理服务调用接口。 / 如果是程序识别的错误,将会抛出该类型的异常。 / / 当前程序已经提供了三种服务调用实现,分别是:“本地调用(Local)”、“Web服务调用 (WS)”、“Remoting调用(Remoting)”。 / / / ISecurityServiceClient serviceClient = / SecurityClientFactory.GetClient(SecurityClientFactory.WebService); / public static ISecurityServiceClient GetClient(string configID) 3-5 类型定义注释代码示例 生成的类库文档样式示例: 3-4 类型定义注释生成文档样式示例 3-6 类型定义注释生成文档样式示例 代码段注释代码段注释 位于属性方法、成员方法内部代码实现,一般使用单行注释形式。示例如 下: / 检查输入有效性 if (user = null) throw new SecurityException(SecurityError.NullUser); if (this.IsUserCodeInUsing(user.Id, user.Code) = true) / 若编号已经被其他用户使用 throw new SecurityException(SecurityError.UserCodeExist, ErrorLevel.Warning); / 获取事件代理,发出用户将被修改的事件 ServiceManager.GetSecurityEventBroker().FireUserModifying(user); / 持久化存取接口 IUserRepository repository = this.GetRepository(); 3-7 代码段注释代码示例 3.33.3 代码书写风格代码书写风格 以下是经常使用到的一些代码格式要求: .1缩进缩进 缩进是通过在每一行代码的前端添加一定数量的显示为空白的符号,在显 示上区分出代码行之间的层次关系。 一个缩进单位是 4 个空格符(不要直接使用 Tab 字符,VS.Net 设置:工具 -选项-文本编辑器-C#-制表符-插入空格) 。 同一语法层级的多行语句要使用统一的缩进单位。 在命名空间、类型定义、属性方法定义、分支循环定义等表达嵌套包含关 系时要使用一个缩进单位。 如果一条语句超过一行,从第二行开始要使用一个缩进单位。 .2空行空行 空行是在代码中添加的只包含回车换行符的空白行。空行可以根据代码行 在语法、逻辑上的相关性或内聚度分隔成多个代码块,从而提高代码的可阅读 性。 在使用命名空间与类型定义之间要添加一个空行。 如果在同一代码文件中声明了不同的类型,则在不同的类型定义之间要添 加一个空行。 在类型的成员定义之间要添加一个空行(字段之间可没有) ,具体如下: 1. 方法、属性成员之间。 2. 属性与字段、方法与字段之间。 3. #region、#endregion 与其他代码行之间。 在一个方法内部(构造函数、属性方法、成员方法等): 1. 方法中变量声明与语句之间。 2. 方法中的多个逻辑步骤之间。 3. 方法中的返回语句与其他的语句之间。 注释与它注释的代码行之间不空行,但与其他的代码行之间空一行。 没有特殊原因,不允许出现连续空行。 .3换行换行 如果一条语句过长(超过了 80 个字符,或者超过代码编辑窗口的显示宽度) ,会造成语句阅读上的困难,必须对这条语句进行换行。换行要遵守缩进的要 求。 换行的位置的选择,尽量选择在操作符(“=” 、 “ return string.Format(“SELECT 1 FROM 0 WHERE 1 = 2“, this.Table, this.PrimaryKey, obj.Id); 3-8 换行示例 .4空格空格 空格即空格符。如果代码行中的表达式字符之间没有空格,会显得代码很 密集、局促,也不好阅读。添加适量的空格,可有效缓解这种情况。 在双目、三目运算符和操作数之间要添加空格。 在左括号“(”与关键字之间要添加空格。 在参数(形参和实参)的多个参数之间要添加空格。 在类型之间的继承、实现关系的“:”左右两侧要添加空格。 在构造函数的继承的“:”左右两侧要添加空格。 不要使用连续多个空格(缩进不在讨论范围内) 。 .5花括号花括号 花括号单独占一行。 左花括号“”与上方相邻语句左对齐,保持同一缩进。 右花括号“” 与左花括号 “”对齐,保持同一缩进。 4 4 命名规范命名规范 一致的命名模式是托管类库中可预知性与可发现性最重要的元素之一。对 这些命名规范广泛的使用和理解将消除许多最常见的用户问题。本文提供 .NET Framework 类型的命名规范。对于每个类型,还应该注意关于大写样式、区分 大小写和措词的一些通用规则。 4.14.1大小写大小写规则规则 使用下面的三种标识符约定: Pascal 大小写规则 将标识符的首字母和后面连接的每个单词的首字母都大写。可以对三字符 或更多字符的标识符使用 Pascal 大小写。 例如:B BackC Color Camel 大小写规则 标识符的首字母小写,而每个后面连接的单词的首字母都大写。 例如:b backC Color 大写规则 标识符中的所有字母都大写。仅对于由两个或者更少字母组成的标识符使 用该约定。 例如:System.IOIO、System.Web.UIUI 可能还必须大写标识符以维持与现有非托管符号方案的兼容性,在该方案 中所有大写字母经常用于枚举和常数值。一般情况下,在使用它们的程序集之 外这些字符应当是不可见的。 下表汇总了大写规则,并提供了不同类型的标识符的示例。 标识符标识符大小写规则大小写规则示例示例 命名空间 PascalSystem.Drawing 类 PascalAppDomain 接口 PascalIDisposable 注:总是以注:总是以 I I 前缀开始。前缀开始。 枚举类型 PascalErrorLevel 枚举值 PascalFatalError 委托 PascalMouseDownEventHandler 私有的常量 CamelfileType 非私有的常量 PascalFileType 只读的静态字段 PascalRedValue 私有的静态字段 CamelserviceInstance 非私有的静态字段 PascalConfigID 注:不建议使用,应使用静态属性。注:不建议使用,应使用静态属性。 私有实例字段 Camelstring code; 非私有的实例字段 PascalRedValue 注:不建议使用,应使用属性。注:不建议使用,应使用属性。 属性 PascalBackColor 方法 PascalToString 方法参数 CameltypeName 局部变量 Camelint index = 0; 事件 PascalMouseDown 4.24.2区分大小写区分大小写 为了避免混淆和保证跨语言交互操作,请遵循有关区分大小写的使用的下 列规则: 1. 不要使用要求区分大小写的名称。对于区分大小写和不区分大小写的语 言,组件都必须完全可以使用。不区分大小写的语言无法区分同一上下 文中仅大小写不同的两个名称。因此,在创建的组件或类中必须避免这 种情况。 2. 不要创建仅是名称大小写有区别的两个命名空间。 例如不区分大小写的语言无法区分以下两个命名空间声明: namespace ee.cummings; namespace Ee.Cummings; 3. 不要创建具有仅是大小写有区别的参数名称的函数。下面的示例是不正 确的。 void MyFunction(string a, string A) 4. 不要创建具有仅是大小写有区别的类型名称的命名空间。在下面的示例 中,PointPoint p p 和 POINTPOINT p p 是不适当的类型名称,原因是它们仅在大小写 方面有区别。 例如:System.Windows.Forms.Point p System.Windows.Forms.POINT p 5. 不要创建具有仅是大小写有区别的属性名称的类型。在下面的示例中, int Color 和 int COLOR 是不适当的属性名称,原因是它们仅在大小写 方面有区别。 例如:int Color get, set int COLOR get, set 6. 不要创建具有仅是大小写有区别的方法名称的类型。在下面的示例中, calculate 和 Calculate 是不适当的方法名称,原因是它们仅在大小写 方面有区别。 例如:void calculate() void Calculate() 4.34.3缩写缩写 为了避免混淆和保证跨语言交互操作,区分缩写使用下列规则: 1. 不要将缩写或缩略形式用作标识符名称的组成部分。例如,使用 GetWindow,而不要使用 GetWin。 2. 不要使用计算机领域中未被普遍接受的缩写。 3. 在适当的时候,使用众所周知的缩写替换冗长的词组名称。例如,用 UI 作为 User Interface 的缩写;用 OLAP 作为 On-line Analytical Processing 的缩写。 4. 在使用缩写时,对于超过两个字符长度的缩写,使用 Pascal 大小写或 Camel 大小写。例如,使用 HtmlButton 或 htmlButton。但是,应当大 写仅有两个字符的缩写,如,System.IO,而不是 System.Io。 5. 不要在标识符或参数名称中使用缩写。如果必须使用缩写,对于由多于 两个字符所组成的缩写请使用 Camel 大小写,虽然这和单词的标准缩写 相冲突。 4.44.4措词措词 避免使用与常用的 .NET Framework 命名空间重复的类名称。例如,不要 将以下任何名称用作类名称:System、Collections、Forms 或 UI。 有关 .NET Framework 命名空间的列表,请参见类库。 另外,避免使用与以下关键字冲突的标识符: CStrCTypeDateDecimalDeclare DefaultDelegateDimDoDouble EachElseElseIfEndEnum EraseErrorEventExitExternalSource FALSEFinalizeFinally FloatFor FriendFunctionGetGetTypeGoto HandlesIfImplementsImportsIn InheritsIntegerInterfaceIsLet LibLikeLongLoop Me ModModuleMustInheritMustOverrideMyBase MyClassNamespaceNewNextNot NothingNotInheritableNotOverridableObjectOn OptionOptionalOrOverloadsOverridable OverridesParamArrayPreservePrivateProperty ProtectedPublicRaiseEventReadOnlyReDim RegionREMRemoveHandlerResumeReturn SelectSetShadowsSharedShort SingleStaticStepStopString StructureSubSyncLockThenThrow ToTRUETryTypeOfUnicode UntilvolatileWhenWhileWith WithEventsWriteOnlyXorevalextends instanceofpackagevar 4.54.5避免类型名称混淆避免类型名称混淆 不同的编程语言使用不同的术语标识基本托管类型。类库设计人员必须避 免使用语言特定的术语。请遵循本节中描述的规则以避免类型名称混淆。 使用描述类型的含义的名称,而不是描述类型的名称。如果参数除了其类 型之外没有任何语义含义,那么在这种罕见的情况下请使用一般性名称。 例如,支持将各种数据类型写入到流中的类可以有以下方法。 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); void Write(int intValue); void Write(short shortValue); 下表列出基本数据类型名称和它们的通用替换。 C#C# 类型类型 名称名称 VisualVisual BasicBasic 类类 型名称型名称 JScriptJScript 类型名称类型名称 VisualVisual C+C+ 类型类型 名称名称 表表 示形式示形式 通用类型通用类型 名称名称 sbyteSBytesBytecharint8SByte byteBytebyteunsigned charunsigned int8Byte shortShortshortshortint16Int16 ushortUInt16ushortunsigned shortunsigned int16UInt16 intIntegerintintint32Int32 uintUInt32uintunsigned intunsigned int32UInt32 longLonglong_int64int64Int64 ulongUInt64ulongunsigned _int64 unsigned int64UInt64 floatSinglefloatfloatfloat32Single doubleDoubledoubledoublefloat64Double boolBooleanbooleanboolboolBoolean charCharcharwchar_tcharChar stringStringstringStringstringString objectObjectobjectObjectobjectObject 例如,支持将从流读取各种数据类型的类可以有以下方法。 C# double ReadDouble(); float ReadSingle(); long ReadInt64(); int ReadInt32(); short ReadInt16(); 上面的示例优先于下面的语言特定的替代方法。 C# double ReadDouble(); float ReadFloat(); long ReadLong(); int ReadInt(); short ReadShort(); 4.64.6命名空间命名规范命名空间命名规范 命名命名空间时的一般性规则是使用公司名称,后跟技术名称和可选的功 能与设计,如下所示。 CompanyName.TechnologyName.Feature.DesignCompanyName.TechnologyName.Feature.Design 例如:Microsoft.Media Microsoft.Media.Design 给命名空间名称加上公司名称或者其他知名商标的前缀可以避免两个已经 发布的命名空间名称相同的可能性。例如,Microsoft.Office 是由 Microsoft 提供的 Office Automation Classes 的一个适当的前缀。 在第二级分层名称上使用稳定的、公认的技术名称。将组织层次架构用作 命名空间层次架构的基础。命名一个命名空间,该命名空间包含为具有 .Design 后缀的基命名空间提供设计时功能的类型。例如, System.Windows.Forms.Design 命名空间包含用于设计基于 System.Windows.Forms 的应用程序的设计器和相关的类。 嵌套的命名空间应当在包含它的命名空间中的类型上有依赖项。例如, System.Web.UI.Design 中的类依赖于 System.Web.UI 中的类。但是, System.Web.UISystem.Web.UI 中的类不依赖于 System.Web.UI.DesignSystem.Web.UI.Design 中的类。 应当对命名空间使用 Pascal 大小写,并用句点分隔逻辑组件,如 Microsoft.Office.PowerPoint 中所示。如果您的商标使用非传统的大小写, 请遵循您的商标所定义的大小写。 如果在语义上适当,使用复数命名空间名称。例如,使用 System.Collections 而不是 System.Collection。此规则的例外是商标名称和 缩写。例如,使用 System.IO 而不是 System.IOs。 不要为命名空间和类使用相同的名称。例如,不要既提供 Debug 命名空间 也提供 Debug 类。 最后,请注意命名空间名称不必非得与程序集名称相似。例如,如果命名 程序集 MyCompany.MyTechnology.dll,它没有必要非得包含 MyCompany.MyTechnology 命名空间。 规定公司内产品或项目,适用的命名空间的原则是: Genersoft.Genersoft.产品产品/ /项目名称项目名称. .模块标识模块标识 4.74.7类命名规范类命名规范 以下规则概述命名类的规范: 1. 使用名词或名词短语命名类。 2. 使用 Pascal 大小写规则。 3. 少用缩写。 4. 不要使用类型前缀,如在类名称上对类使用 C 前缀。例如,使用类名称 FileStream,而不是 CFileStream。 5. 不要使用下划线字符 (_)。 6. 有时候需要提供以字母 I 开始的类名称,虽然该类不是接口。只要 I 是作为类名称组成部分的整个单词的第一个字母,这便是适当的。例如, 类名称 IdentityStore 就是适当的。 7. 在适当的地方,使用复合单词命名派生的类。派生类名称的第二个部分 应当是基类的名称。例如,ApplicationException 对于从名为 Exception 的类派生的类是适当的名称,原因是 ApplicationException 是一种 Exception。请在应用该规则时进行合理的判断。例如,Button 对于从 Control 派生的类是适当的名称。尽管按钮是一种控件,但是将 Control 作为类名称的一部分将使名称不必要地加长。 下面是正确命名的类的示例: C# public class FileStream public class Button public class String 4.84.8接口命名规范接口命名规范 以下规则概述接口的命名规范: 1. 用名词或名词短语,或者描述行为的形容词命名接口。例如,接口名称 IComponent 使用描述性名词。接口名称 ICustomAttributeProvider 使 用名词短语。名称 IPersistable 使用形容词。 2. 使用 Pascal 大小写规则。 3. 少用缩写。 4. 接口名称加上字母 I 前缀,以指示该类型为接口。 5. 在定义类/接口对(其中类是接口的标准实现)时使用相似的名称。两个 名称的区别应该只是接口名称上有字母 I 前缀。 6. 不要使用下划线字符 (_)。 以下是正确命名的接口的示例。 C# public interface IServiceProvider public interface IFormatable 以下代码示例阐释如何定义 IComponent 接口及其标准实现 Component 类。 C# public interface IComponent / Implementation code 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 委托命名规范委托命名规范 以下规则概述委托的命名规范: 1. 使用 Pascal 大小写。 2. 不要使用匈牙利命名法。 3. 对委托处理程序名称使用 EventHandler 后缀。 4. 指定两个名为 sender 和 e 的参数。sender 参数表示引发事件的对象。 sender 参数始终是 object 类型的,即使在可以使用更为特定的类型时 也如此。与事件相关联的状态封装在名为 e 的事件类的实例中。对 e 参数类型使用适当而特定的事件类。 5. 用 EventArgs 后缀命名事件参数类。 6. 建议用主谓短语或动词来命名委托。例如: MouseClickEventHandler。 7. 使用动词运行时文法(动词的“ing”形式)表示“将要发生”含义的委 托称,用过去式表示“已发生” 含义的委托名称。例如,可以取消的 Close 委托应当具有 ClosingEventHandler 和 ClosedEventHandler 两 个委托。不要使用 BeforeXxxEventHandler 或 AfterXxxEventHandler 命 名模式。 8. 不要在委托名称中使用前缀或者后缀。例如,使用 CloseEventHandler,而不要使用 OnOnCloseEventHandler。 以下示例阐释具有适当名称和参数的事件处理程序: C# public delegate void MouseDownEventHandler(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. 使用描述性名称,且名称应含义清晰,不要使用描述其类型的名称。 3. 私有常量字段使用 Camel 大小写规则。 4. 非私有的常量字段使用 Pascal 大小写规则。 5. 不要在常量字段名称中使用匈牙利命名法的前缀。 4.124.12 静态字段命名规范静态字段命名规范 以下规则概述静态字段的命名规范: 1. 使用名词、名词短语或者名词的缩写命名静态字段。 2. 使用描述性名称,且名称应含义清晰,不要使用描述其类型的名称。 3. 私有静态字段使用 Camel 大小写规则。 4. 常量静态字段使用 Pascal 大小写规则。 5. 非私有的静态字段使用 Pascal 大小写规则。应使用静态属性提供外部访 问,不建议暴露外部可访问的静态字段。 6. 不要在静态字段名称中使用匈牙利命名法的前缀。 4.134.13 实例字段命名规范实例字段命名规范 以下规则概述实例字段的命名规范: 1. 对私有实例字段使用 Camel 大小写规则。 2. 使用描述性名称,且名称应含义清晰,不要使用描述其类型的名称。 3. 不要给实例字段加匈牙利命名法的前缀。 4. 非私有的实例字段使用 Pascal 大小写规则。应使用实例属性提供外部访 问,不建议暴露外部可访问的实例字段。 以下是正确命名的实例字段的示例: C# string displayName; List children; 4.144.14 属性命名规范属性命名规范 以下规则概述属性的命名规范: 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 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. 在不正确的示例中,不可能引用 Color 枚举的成员。Color.Xxx 将被解释 为访问一个成员,该成员首先获取 Color 属性(在 Visual Basic 中为 Integer 类型,在 C# 中为 int 类型)的值,然后再访问该值的某个成员(该 成员必须是 System.Int32 的实例成员)。 4.154.15 方法命名规范方法命名规范 以下规则概述方法的命名规范: 1. 使用动词或动词短语命名方法。 2. 使用 Pascal 大小写规则。 以下是正确命名的方法的示例: Remove

温馨提示

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

评论

0/150

提交评论