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

下载本文档

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

文档简介

1、开发人员手册 开 发 人 员 手 册 -VS.NET开发规范篇 文档最后修订者及日期: 孙立新 2009-3-16 本版文件批准人及日期: 浪潮集团山东通用软件有限公司 目录 1 导言 6 1.1 目 6 1.2 适用范围 6 1.3 术语定义 6 1.4 参考资料 6 1.5 版本更新记录 6 2 使用开发工具: 6 3 程序源代码风格定义 6 3.1 代码结构风格 7 3.2 注释风格 8 3.2.1 单行注释 8 3.2.2 多行注释 8 3.2.3 文档型注释 8 3.2.4 文档型注释规范 10 3.3 代码书写风格 11 3.3.1 缩进 12 3.3.2 空行 12 3.3.3

2、换行 12 3.3.4 空格 13 3.3.5 花括号 13 4 命名规范 13 4.1 大写规则 13 4.2 区分大小写 15 4.3 缩写 16 4.4 措词 16 4.5 避免类型名称混淆 17 4.6 命名空间命名规范 18 4.7 类命名规范 20 4.8 接口命名规范 20 4.9 属性命名规范 21 4.10 枚举类型命名规范 21 4.11 静态字段命名规范 22 4.12 参数命名规范 25 4.13 方法命名规范 25 4.14 属性命名规范 23 4.15 事件命名规范 26 4.16 数据库对象命名规范 27 4.16.1 数据库名(开发过程中) 27 4.16.2

3、数据库表 27 4.16.3 字段 28 4.16.4 存储过程命名约定 29 4.16.5 触发器(插入,更新,删除)命名约定 29 4.16.6 视图命名约定 29 4.16.7 自定义数据类型命名约定 29 4.16.8 自定义函数命名约定 31 4.17 数据库表结构设计规范 31 4.18 数据库存储过程编写规范 32 5 界面规范 33 5.1 总则 33 5.2 遵从原则 33 5.3 色彩搭配 33 5.4 屏幕大小 33 5.5 主控页面 33 5.5.1 主页:登录窗口 33 5.5.2 主操作页分成三个区域:标题菜单区、系统管理区、操作区 34 5.5.3 浏览器 34

4、5.6 各种页面模板应用场景 34 5.6.1 字典类 34 5.6.2 单据类 35 5.6.3 管理类 37 5.6.4 索引类 37 5.6.5 Tab页类 38 5.6.6 响应式窗口类 38 5.6.7 查询结果/报表类 38 6 提示信息规范 38 6.1 总则 38 6.2 提示信息 38 7 热键定义、帮助及使用规范 38 7.1 总则 38 7.2 规范 39 8 单元测试规范(从开发人员角度) 39 8.1 总则 39 8.2 测试规范 39 9 配置管理规范(从开发人员角度) 40 9.1 总则 40 9.2 开发前准备 40 9.3 开发过程中规则 41 10 程序模板

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

6、ected(受保护)、protected internal(受保护或内部公有)、private(私有)。在此约定好中英文对照名称。 非私有包括:公有、内部公有、受保护、受保护或内部公有。 参考资料 C# Language Specification1.2.doc C# Language Specification 2.0.doc 版本更新记录 版本/修订版 修改确认日期 修改内容概述 起草人 审核人 备注 1.0 2003-10 初始版本 鞠强 曲丽君 2.0 2008-03 代码风格章节命名规范样式调整 孙立新 使用开发工具: Microsoft? Visual Studio .Net 20

7、05? - C#.Net 程序源代码风格定义 源代码风格规范是在编写源代码文件时,对于书写格式和规则统一要求。 编写源代码最基本目标是能够经过编译生成可执行程序。此外,源代码另一个主要目标是为了阅读,源代码不仅仅是为了编译器能够读懂,同时也是为了人能够读懂,且易于读懂。这就如写文章句读、段落、章节等类似,如果没有一种良好书写风格和习惯,不仅仅会使写出文章难以阅读,而且可能会造成不少曲解。有句话叫“文如其人”,代码也同样是“文如其人”。 此外,作为一个协作密切开发团队,非常有必要保持一致代码书写风格,它有助于团队开发保持高效(沟通交流、代码阅读、工作交接、工作延续性等方面)。 代码结构风格 对于

8、每一个代码文件(*.cs),它内容分为如下两个部分: 使用命名空间 类型定义 使用命名空间,要求必须都声明在代码文件最前方。建议.net framework中定义命名空间放在最上面,然后根据与当前代码关系远近依次排列,对于引用命名空间,按照引用来源分段列示,段与段之间用空行分隔。示例图如下: 在类型定义部分,一个代码文件原则上只包含一个如下类型定义:类、接口、结构、枚举。这样有利于构造出条理清晰代码文件结构,一目了然。对于委托定义,可考虑在一个代码文件中集中定义内聚度较高一类枚举。 对于类定义,按照一下顺序定义: 常量 字段 构造函数 析构函数 属性 using System; using S

9、ystem.Collections; using System.Collections.Generic; using DevExpress.XtraTreeList; using DevExpress.XtraTreeList.Nodes; using Genersoft.Platform.Core.Common; using Genersoft.Platform.Core.Error; 错误!文档中没有指定样式的文字。-1 使用命名空间代码示例 方法 事件 所有类成员必须显式声明访问修饰限定符(public、internal、protected、private)。为使类型具有良好封装性,其中

10、字段类型只能声明为private。 对于接口和结构体定义,其成员声明顺序与类定义相同。 每行代码只允许写一条语句。每行代码写多条语句往往会造成调试定位、注释以及阅读困难。 注释风格 传统注释风格:单行注释符号“/”和多行注释符号“/* */”在C#中依然可以使用。在.NET中,提供了额外XML文档注释标记(Tags for Documentation Comments)。 单行注释 单行注释,即形式为“/”注释。单行注释用于方法内代码注释。如对局部变量声明注释或代码行、代码段注释。单行注释可单独一行,如果仅仅针对一句注释,且不影响换行,可放于代码行后部。 单行注释也可以用于临时屏蔽不用代码行,

11、在开发完毕后应及时清理。 特殊,单行注释用于代码文件声明注释,见代码文件注释。 多行注释 多行注释,即形式为“/* */”注释。一般,不建议在代码中使用多行注释。多行注释可用于临时屏蔽不用代码行,在开发完毕后应及时清理。 文档型注释 文档型注释,即XML文档注释标记(Tags for Documentation Comments),该类注释是.Net定义Xml标签,在声明接口、类、方法、属性、字段都应该使用该类注释,除了在阅读代码时了解代码语义之外,可通过该类注释生成代码类库帮助文档(*.chm)。这些标记包括如下表全部内容: 文档标签 用法示意 功能说明 description descri

12、ption:对象摘要。 应当用于描述类型成员。使用 以提供有关类型本信息param namenamdescriptionam:方法参数名descriptio:参数说明应当用于方法声明注释中以描方法一个参数 nam:引用参数名标记为您提供了一指示词为参数方法可以处 XML文件从而用某种独特方法格式该参数exceptioncrefmembedescriptiomembe:对可从当前编译环境中获取异常。译检到给定常在,membe转换为输 XML中规范化元素名descriptio:异常使用条件说明标记使您可以指类能够引发异常 returnsdescriptioDescriptio:返回值说明标记应当用

13、于方法明注释,以描述返回值crefmemb:对可以通过当前编译环进行调用成员或字段引用。编译器检查到定代码元素存在后,membe传递给输XML中元素名使您得以从文本内指定链接使阅”一节中出现文本crefmemb:对可以通过当前编译环进行调用成员或字段引用。编译器检查到定代码元素存在后,membe传递给输XML中元素名使您得以指定希望在“请参阅一节中出现文本。使 文exampledescriptiodescriptio:代码示例使 标记可以指定用方法或其他库成员示例一般况下这将涉及 标记用ctextex:指示为代码文本为您提供了一种将说明中文本记为代码方法使 将行指示为代codecontenco

14、nten:标记为代码段文本 记为您提供了一种将多行指示代码方法。使 指示应将明中文本标记为代 valueproperty-descriptioproperty-descriptio:属性取值说明标记使您得以描述属性请注意当 VisualStudio.NET开发环境中通过代码向导添加标记然后应该手添 标记以描述该属所表示值paracontenConten:段落文本等标记内使您得以结构添加到文本中filename包含文档文件名该文件名可用径加以限定filenam括在单引号 ( Tagpatfilenam中指向标记名标记路径将此路径括在单引号 ( nam注释前边标记中名称说明符名称具一i i 位于注

15、释之前标 i将 id括在双引 ( 标记使您得以引用述源代码中类型和成员另一文中注释这是除了将文档注释直置于源代码文件中之外另一种选方法标记使 XML XPath语法。有关自定 用方法,请参 XPath文档 termter descriptiondescriptio termter ter:定义项,该项将tex中定义descriptio:目符号列表或编号列表中或ter定义块用于定义表或义列表中标题行定义表时只为标题中项提供一个项列表中每一项 块指定ter也需要指tex但是于表、项目符号列表或编号列表只需tex提供一个项列表或表所拥 块数以根据需要而定permissioncrefmembedesc

16、riptiocref =membe对可以通过当前编译环进行调用成员或字段引用。编译器检查到定代码元素存在后,membe转换为输XML中规范化元素名。必须membe括双引 ( )中 descriptio 成员访问说明标记使您得以将System.Security.PermissionSe使您得以指定对成员访问remarksdescriptiodescriptio:备注说明标记是可以描述有类或其他类型备注概述信息 注释规范代码文件注对于每一个代码文件*.c,在文件起始位置添加注释,用以声明代码文件用途、版本修订历史、作者、创建日期以及版权声明等信息 类型定义注释 在类型定义时,需要添加该类型功能用途

17、说明注释。用途说明应为阅读者介绍该类型提供主要功能,并向使用者介绍该类使用时需要了解知识,不要泛泛而谈,内容空洞,应付了事。使用“”标签,内部可根据需要添加适当标签,以便更清楚表达。 生成类库文档样式示例: 成员声明注释 在类内部,对于成员声明,注释应能够说明成员功能用途,如果成员带有参数和返回值,应说明相应含义。功能用途使用“”标签。参数使用“”标签,返回值使用“”标签,另可根据成员调用应注意问题和相关知识进行说明,可采用“” 标签进行备注说明,采用“” 标签提供编程Demo。示例如下: 生成类库文档样式示例: 代码段注释 位于属性方法、成员方法内部代码实现,一般使用单行注释形式。示例如下:

18、 代码书写风格 以下是经常使用到一些代码格式要求: / 检查输入有效性 if (user = null) throw new SecurityException(SecurityError.NullUser); if (this.IsUserCodeInUsing(user.Id, user.Code) = true) / 若编号已经被其他用户使用 throw new SecurityException(SecurityError.UserCodeExist, ErrorLevel.Warning); / 获取事件代理,发出用户将被修改事件 ServiceManager.GetSecurity

19、EventBroker().FireUserModifying(user); / 持久化存取接口 IUserRepository repository = this.GetRepository()错误!文档中没有指定样式的文字。-7 代码段注释代码示例 / = / 日期 版本 修改人 描述 / = / 作者 / 日期/浪潮集团山东通用软件有限公司版权所有。保留所有权利/ =错文档中没有指定样式的文字-2代码文件注释示/安全管理服务调用接口工厂。用于为调用者创see cref=ISecurityServiceClient/ / 根据配置文件SecurityClientConfiguration小

20、节定义配置信息,创建相应服务实现。 / 若调用是SecurityClientFactory.GetClient()方法,是获取小节中UsingClient属性指定服务实现。 / public static class SecurityClientFactory 错误!文档中没有指定样式的文字。-3 类型定义注释示例 / / 获取指定配置安全管理服务调用接口。 / / 配置标识。对应于配置项中Code属性。 / 安全管理服务调用接口。 / 如果是程序识别错误,将会抛出该类型异常。 / / 当前程序已经提供了三种服务调用实现,分别是:“本地调用(Local)”、“Web服务调用(WS)”、“Rem

21、oting调用(Remoting)”。 / / / ISecurityServiceClient serviceClient = / SecurityClientFactory.GetClient(SecurityClientFactory.WebService); / public static ISecurityServiceClient GetClient(string configID) 错误!文档中没有指定样式的文字。-5 类型定义注释代码示例 错误!文档中没有指定样式的文字。-6 类型定义注释生成文档样式示例 错误!文档中没有指定样式的文字。-4 类型定义注释生成文档样式示例 缩进

22、 缩进是通过在每一行代码前端添加一定数量显示为空白符号,在显示上区分出代码行之间层次关系。 一个缩进单位是4个空格符(不要直接使用Tab字符,VS.Net设置:工具-选项-文本编辑器-C#-制表符-插入空格)。 同一语法层级多行语句要使用统一缩进单位。 在命名空间、类型定义、属性方法定义、分支循环定义等表达嵌套包含关系时要使用一个缩进单位。 如果一条语句超过一行,从第二行开始要使用一个缩进单位。 空行 空行是在代码中添加只包含回车换行符空白行。空行可以根据代码行在语法、逻辑上相关性或内聚度分隔成多个代码块,从而提高代码可阅读性。 在使用命名空间与类型定义之间要添加一个空行。 如果在同一代码文件

23、中声明了不同类型,则在不同类型定义之间要添加一个空行。 在类型成员定义之间要添加一个空行(字段之间可没有),具体如下: 方法、属性成员之间。 属性与字段、方法与字段之间。 #region、#endregion与其他代码行之间。 在一个方法内部(构造函数、属性方法、成员方法等): 方法中变量声明与语句之间。 方法中多个逻辑步骤之间。 方法中返回语句与其他语句之间。 注释与它注释代码行之间不空行,但与其他代码行之间空一行。 没有特殊原因,不允许出现连续空行。 换行 如果一条语句过长(超过了80个字符,或者超过代码编辑窗口显示宽度),会造成语句阅读上困难,必须对这条语句进行换行。换行要遵守缩进要求。

24、 换行位置选择,尽量选择在操作符(“=”、“&”、“|”、“,”等)之后,不破坏代码连贯性,易于理解。 空格 空格即空格符。如果代码行中表达式字符之间没有空格,会显得代码很密集、局促,也不好阅读。添加适量空格,可有效缓解这种情况。 在双目、三目运算符和操作数之间要添加空格。 在左括号“(”与关键字之间要添加空格。 在参数(形参和实参)多个参数之间要添加空格。 在类型之间继承、实现关系“:”左右两侧要添加空格。 在构造函数继承“:”左右两侧要添加空格。 不要使用连续多个空格(缩进不在讨论范围内)。 花括号 花括号单独占一行。 左花括号“”与上方相邻语句左对齐,保持同一缩进。 右花括号“” 与左花

25、括号 “”对齐,保持同一缩进。 命名规范 一致命名模式是托管类库中可预知性与可发现性最重要元素之一。对这些命名规范广泛使用和理解将消除许多最常见用户问题。本文提供 .NET Framework 类型命名规范。对于每个类型,还应该注意关于大写样式、区分大小写和措词一些通用规则。 大小写规则 使用下面三种标识符约定: Pascal 大小写规则 SomeBlockEventBroker broker = ServiceManager.GetSomeBlockEventBroker() if (info.HitTest = GridHitTest.RowCell | info.HitTest = Gr

26、idHitTest.RowIndicator) this.DoSomething(); return string.Format(SELECT 1 FROM 0 WHERE 1 = 2, this.Table, this.PrimaryKey, obj.Id); 错误!文档中没有指定样式的文字。-8 换行示例 将标识符首字母和后面连接每个单词首字母都大写。可以对三字符或更多字符标识符使用 Pascal 大小写。 例如:BackColor Camel 大小写规则 标识符首字母小写,而每个后面连接单词首字母都大写。 例如:backColor 大写规则 标识符中所有字母都大写。仅对于由两个或者更少字

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

28、nEventHandler 私有常量 Camel fileType 非私有常量 Pascal FileType 只读静态字段 Pascal RedValue 私有静态字段 Camel serviceInstance 非私有静态字段 Pascal ConfigID 注:不建议使用,应使用静态属性。私有实例字段 Camel string code; 非私有实例字段 Pascal RedValue 注:不建议使用,应使用属性。属性 Pascal BackColor 方法 Pascal ToString 方法参数 局部变量 事件 Camel typeName Camel int index = 0;

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

30、, string A) 不要创建具有仅是大小写有区别类型名称命名空间。在下面示例中,Point p 和 POINT p 是不适当类型名称,原因是它们仅在大小写方面有区别。 例如:System.Windows.Forms.Point p System.Windows.Forms.POINT p 不要创建具有仅是大小写有区别属性名称类型。在下面示例中,int Color 和 int COLOR 是不适当属性名称,原因是它们仅在大小写方面有区别。 例如:int Color get, set int COLOR get, set 不要创建具有仅是大小写有区别方法名称类型。在下面示例中,calculat

31、e 和 Calculate 是不适当方法名称,原因是它们仅在大小写方面有区别。 例如:void calculate() void Calculate() 缩写 为了避免混淆和保证跨语言交互操作,区分缩写使用下列规则: 不要将缩写或缩略形式用作标识符名称组成部分。例如,使用 GetWindow,而不要使用 GetWin。 不要使用计算机领域中未被普遍接受缩写。 在适当时候,使用众所周知缩写替换冗长词组名称。例如,用 UI 作为 User Interface 缩写;用 OLAP 作为 On-line Analytical Processing 缩写。 在使用缩写时,对于超过两个字符长度缩写,使用

32、Pascal 大小写或 Camel 大小写。例如,使用 HtmlButton 或 htmlButton。但是,应当大写仅有两个字符缩写,如,System.IO,而不是 System.Io。 不要在标识符或参数名称中使用缩写。如果必须使用缩写,对于由多于两个字符所组成缩写请使用 Camel 大小写,虽然这和单词标准缩写相冲突。 措词 避免使用与常用 .NET Framework 命名空间重复类名称。例如,不要将以下任何名称用作类名称:System、Collections、Forms 或 UI。 有关 .NET Framework 命名空间列表,请参见类库。 另外,避免使用与以下关键字冲突标识符:

33、 CStr CType Default Delegate Date Decimal Dim Do Declare Double Each Else Erase Error FALSE Finalize Friend Function Handles If Inherits Integer Lib Like Mod Module MyClass Namespace Nothing NotInheritable ElseIf End Event Exit Finally Float Get GetType Implements Imports Interface Is Long Loop Must

34、Inherit MustOverride New Next NotOverridable Object Enum ExternalSource For Goto In Let Me MyBase Not On Option Optional Or Overloads Overridable Overrides ParamArray Preserve Private Property Protected Public RaiseEvent ReadOnly ReDim Region REM RemoveHandler Resume Return Select Set Shadows Shared

35、 Short Single Static Step Stop String Structure Sub SyncLock Then Throw To TRUE Try TypeOf Unicode Until volatile When While With WithEvents WriteOnly Xor eval extends instanceof package var 避免类型名称混淆 不同编程语言使用不同术语标识基本托管类型。类库设计人员必须避免使用语言特定术语。请遵循本节中描述规则以避免类型名称混淆。 使用描述类型含义名称,而不是描述类型名称。如果参数除了其类型之外没有任何语义含

36、义,那么在这种罕见情况下请使用一般性名称。 例如,支持将各种数据类型写入到流中类可以有以下方法。 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

37、(int intValue); void Write(short shortValue); 下表列出基本数据类型名称和它们通用替换。 C# 类型名称 Visual Basic 类型名称 JScript 类型名称 Visual C+ 类型名称 表示形式 通用类型名称 sbyte SByte sByte char int8 SByte byte Byte byte unsigned char unsigned int8 Byte short Short short short int16 Int16 ushort UInt16 ushort unsigned short unsigned int1

38、6 UInt16 int Integer int int int32 Int32 uint UInt32 uint unsigned int unsigned int32 UInt32 long Long long _int64 int64 Int64 ulong UInt64 ulong unsigned _int64 unsigned int64 UInt64 float Single float float float32 Single double Double double double float64 Double bool Boolean boolean bool bool Bo

39、olean char Char char wchar_t char Char string String string String string String object Object object Object object Object 例如,支持将从流读取各种数据类型类可以有以下方法。 C# double ReadDouble(); float ReadSingle(); long ReadInt64(); int ReadInt32(); short ReadInt16(); 上面示例优先于下面语言特定替代方法。 C# double ReadDouble(); float Read

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

41、 一个适当前缀。 在第二级分层名称上使用稳定、公认技术名称。将组织层次架构用作命名空间层次架构基础。命名一个命名空间,该命名空间包含为具有 .Design 后缀基命名空间提供设计时功能类型。例如,包含用于设计基于 应用程序设计器和相关类。 嵌套命名空间应当在包含它命名空间中类型上有依赖项。例如, 中类依赖于 中类。但是,System.Web.UI 中类不依赖于 System.Web.UI.Design 中类。 应当对命名空间使用 Pascal 大小写,并用句点分隔逻辑组件,如 Microsoft.Office.PowerPoint 中所示。如果您商标使用非传统大小写,请遵循您商标所定义大小写。

42、 如果在语义上适当,使用复数命名空间名称。例如,使用 System.Collections 而不是 System.Collection。此规则例外是商标名称和缩写。例如,使用 System.IO 而不是 System.IOs。 不要为命名空间和类使用相同名称。例如,不要既提供 Debug 命名空间也提供 Debug 类。 最后,请注意命名空间名称不必非得与程序集名称相似。例如,如果命名程序集 MyCompany.MyTechnology.dll,它没有必要非得包含 MyCompany.MyTechnology 命名空间。 规定公司内产品或项目,适用命名空间原则是: Genersoft.产品/项

43、目名称.模块标识 类命名规范 以下规则概述命名类规范: 使用名词或名词短语命名类。 使用 Pascal 大小写规则。 少用缩写。 不要使用类型前缀,如在类名称上对类使用 C 前缀。例如,使用类名称 FileStream,而不是 CFileStream。 不要使用下划线字符 (_)。 有时候需要提供以字母 I 开始类名称,虽然该类不是接口。只要 I 是作为类名称组成部分整个单词第一个字母,这便是适当。例如,类名称 IdentityStore 就是适当。 在适当地方,使用复合单词命名派生类。派生类名称第二个部分应当是基类名称。例如,ApplicationException 对于从名为 Except

44、ion 类派生类是适当名称,原因是 ApplicationException 是一种 Exception。请在应用该规则时进行合理判断。例如,Button 对于从 Control 派生类是适当名称。尽管按钮是一种控件,但是将 Control 作为类名称一部分将使名称不必要地加长。 下面是正确命名类示例: C# public class FileStream public class Button public class String 接口命名规范 以下规则概述接口命名规范: 用名词或名词短语,或者描述行为形容词命名接口。例如,接口名称 IComponent 使用描述性名词。接口名称 ICus

45、tomAttributeProvider 使用名词短语。名称 IPersistable 使用形容词。 使用 Pascal 大小写规则。 少用缩写。 接口名称加上字母 I 前缀,以指示该类型为接口。 在定义类/接口对(其中类是接口标准实现)时使用相似名称。两个名称区别应该只是接口名称上有字母 I 前缀。 不要使用下划线字符 (_)。 以下是正确命名接口示例。 C# public interface IServiceProvider public interface IFormatable 以下代码示例阐释如何定义 IComponent 接口及其标准实现 Component 类。 C# publi

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

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

48、托名称。例如,可以取消 Close 委托应当具有 ClosingEventHandler和 ClosedEventHandler 两个委托。不要使用BeforeXxxEventHandler或AfterXxxEventHandler命名模式。 不要在委托名称中使用前缀或者后缀。例如,使用 CloseEventHandler,而不要使用 OnCloseEventHandler。 以下示例阐释具有适当名称和参数事件处理程序: C# public delegate void MouseDownEventHandler(object sender, MouseEventArgs e); 以下示例阐释正

49、确命名事件参数类: 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; 常量字段命名规范 以下规则概述静态字段命名规范: 使用名词、名词短语或者名词缩写命名常量字段。 使用描述性名称,且名称应含义清晰,不要使用描述其类型名称。 私有常量字段使用Camel大小写规则。 非私有常量字段使用Pascal大小写规则。

50、 不要在常量字段名称中使用匈牙利命名法前缀。 静态字段命名规范 以下规则概述静态字段命名规范: 使用名词、名词短语或者名词缩写命名静态字段。 使用描述性名称,且名称应含义清晰,不要使用描述其类型名称。 私有静态字段使用Camel大小写规则。 常量静态字段使用Pascal大小写规则。 非私有静态字段使用Pascal大小写规则。应使用静态属性提供外部访问,不建议暴露外部可访问静态字段。 不要在静态字段名称中使用匈牙利命名法前缀。 实例字段命名规范 以下规则概述实例字段命名规范: 对私有实例字段使用Camel大小写规则。 使用描述性名称,且名称应含义清晰,不要使用描述其类型名称。 不要给实例字段加匈牙利命名法前缀。 非私有实

温馨提示

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

最新文档

评论

0/150

提交评论