开发人员手册VSNET开发规范篇.docx

上传人:小飞机 文档编号:1908081 上传时间:2022-12-25 格式:DOCX 页数:23 大小:114.58KB
返回 下载 相关 举报
开发人员手册VSNET开发规范篇.docx_第1页
第1页 / 共23页
开发人员手册VSNET开发规范篇.docx_第2页
第2页 / 共23页
开发人员手册VSNET开发规范篇.docx_第3页
第3页 / 共23页
开发人员手册VSNET开发规范篇.docx_第4页
第4页 / 共23页
开发人员手册VSNET开发规范篇.docx_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《开发人员手册VSNET开发规范篇.docx》由会员分享,可在线阅读,更多相关《开发人员手册VSNET开发规范篇.docx(23页珍藏版)》请在三一办公上搜索。

1、密级:秘密 开 发 人 员 手 册 开发规范篇文档最后修订者及日期:孙立新2009-3-16本版文件批准人及日期:浪潮集团山东通用软件有限公司目录1 导言1.1 目的本文档是为基于公司的 - 系列开发工具进行软件开发的一个规范性文件。其目的是: 保证软件开发过程中有一个统一的标准可以进行参照:包括类库、公共接口、设计模式、命名规范等。 能够合理的使用公用资源1.2 适用范围本文档主要是基于目前三层架构开发模式中的方式进行描述的,并同样适合于传统的三层架构:。1.3 术语定义可访问性修饰符:(公有)、(内部公有)、(受保护)、 (受保护或内部公有)、(私有)。在此约定好中英文对照名称。非私有包括

2、:公有、内部公有、受保护、受保护或内部公有。1.4 参考资料1. 1.22. 2.01.5 版本更新记录版本/修订版修改确认日期修改内容概述起草人审核人备注1.02003-10初始版本鞠强曲丽君2.02008-03代码风格章节调整命名规范细化样式调整孙立新2 使用的开发工具: 2005 - 3 程序源代码风格定义源代码风格规范是在编写源代码文件时,对于书写格式和规则的统一要求。编写源代码最基本的目标是能够经过编译生成可执行程序。此外,源代码的另一个主要目标是为了阅读,源代码不仅仅是为了编译器能够读懂,同时也是为了人能够读懂,且易于读懂。这就如写文章的句读、段落、章节等类似,如果没有一种良好的书

3、写风格和习惯,不仅仅会使写出的文章难以阅读,而且可能会造成不少曲解。有句话叫“文如其人”,代码也同样是“文如其人”。此外,作为一个协作密切的开发团队,非常有必要保持一致的代码书写风格,它有助于团队开发保持高效(沟通交流、代码阅读、工作交接、工作延续性等方面)。3.1 代码结构风格对于每一个代码文件(*),它的内容分为如下两个部分:u 使用的命名空间u 类型定义使用的命名空间,要求必须都声明在代码文件的最前方。建议 中定义的命名空间放在最上面,然后根据与当前代码关系的远近依次排列,对于引用的命名空间,按照引用来源分段列示,段与段之间用空行分隔。示例图如下: ; ; ; ; ; ; ;31 使用的

4、命名空间代码示例在类型定义部分,一个代码文件原则上只包含一个如下类型的定义:类、接口、结构、枚举。这样有利于构造出条理清晰的代码文件结构,一目了然。对于委托的定义,可考虑在一个代码文件中集中定义内聚度较高的一类枚举。对于类的定义,按照一下顺序定义:u 常量u 字段u 构造函数u 析构函数u 属性u 方法u 事件所有的类成员必须显式的声明访问修饰限定符(、)。为使类型具有良好的封装性,其中字段类型只能声明为。对于接口和结构体定义,其成员声明顺序与类定义相同。每行代码只允许写一条语句。每行代码写多条语句往往会造成调试定位、注释以及阅读的困难。3.2 注释风格传统的注释风格:单行注释符号“”和多行注

5、释符号“/* */”在中依然可以使用。在中,提供了额外的文档注释标记( )。3.2.1 单行注释单行注释,即形式为“”的注释。单行注释用于方法内的代码注释。如对局部变量声明的注释或代码行、代码段的注释。单行注释可单独一行,如果仅仅针对一句注释,且不影响换行,可放于代码行后部。单行注释也可以用于临时屏蔽不用的代码行,在开发完毕后应及时清理。特殊的,单行注释用于代码文件声明的注释,见。3.2.2 多行注释多行注释,即形式为“/* */”的注释。一般的,不建议在代码中使用多行注释。多行注释可用于临时屏蔽不用的代码行,在开发完毕后应及时清理。3.2.3 文档型注释文档型注释,即文档注释标记( ),该类

6、注释是定义的标签,在声明接口、类、方法、属性、字段都应该使用该类注释,除了在阅读代码时了解代码语义之外,可通过该类注释生成代码类库的帮助文档(*)。这些标记包括如下表的全部内容:文档标签用法示意功能说明:对象的摘要。应当用于描述类型成员。使用 以提供有关类型本身的信息。:方法参数名。:参数的说明。应当用于方法声明的注释中,以描述方法的一个参数。 :引用的参数名。 标记为您提供了一种指示词为参数的方法。可以处理 文件,从而用某种独特的方法格式化该参数。:对可从当前编译环境中获取的异常的引用。编译器检查到给定异常存在后,将 转换为输出 中的规范化元素名。:异常使用条件说明。 标记使您可以指定类能够

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

8、。使用 将多行指示为代码:标记为代码段的文本。 记为您提供了一种将多行指示为代码的方法。使用 指示应将说明中的文本标记为代码 :属性取值的说明。 标记使您得以描述属性。请注意,当在 开发环境中通过代码向导添加属性时,它将会为新属性添加 标记。然后,应该手动添加 标记以描述该属性所表示的值。:段落文本。用于诸如 或 等标记内,使您得以将结构添加到文本中。 包含文档的文件名。该文件名可用路径加以限定。将 括在单引号中 ( )。 : 中指向标记名的标记路径。将此路径括在单引号中 ( )。 注释前边的标记中的名称说明符;名称具有一个 。 位于注释之前的标记的 。将此 括在双引号中 ( )。 标记使您得

9、以引用描述源代码中类型和成员的另一文件中的注释。这是除了将文档注释直接置于源代码文件中之外的另一种可选方法。 标记使用 语法。有关自定义 使用的方法,请参阅 文档。 :定义的项,该项将在 中定义。 :目符号列表或编号列表中的项或者 的定义。 块用于定义表或定义列表中的标题行。定义表时,只需为标题中的项提供一个项。列表中的每一项用 块指定。创建定义列表时,既需要指定 也需要指定 。但是,对于表、项目符号列表或编号列表,只需为 提供一个项。列表或表所拥有的 块数可以根据需要而定。 = 对可以通过当前编译环境进行调用的成员或字段的引用。编译器检查到给定代码元素存在后,将 转换为输出 中的规范化元素名

10、。必须将 括在双引号 ( ) 中。 成员的访问的说明。 标记使您得以将成员的访问记入文档。 使您得以指定对成员的访问。:备注说明。 标记是可以描述有关类或其他类型的备注概述信息。3.2.4 注释规范3.2.4.1 代码文件注释对于每一个代码文件(*),在文件起始位置添加注释,用以声明该代码文件的用途、版本修订历史、作者、创建日期以及x声明等信息。 浪潮产品 功能用途定义。 请查看开发文档来了解关于此类型的更多信息。 日期 版本修改人 描述 作者 日期 浪潮集团山东通用软件有限公司x所有。保留所有权利。 32 代码文件注释示例3.2.4.2 类型定义注释在类型定义时,需要添加该类型的功能用途说明

11、的注释。用途说明应为阅读者介绍该类型提供的主要功能,并向使用者介绍该类使用时需要了解的知识,不要泛泛而谈,内容空洞,应付了事。使用“”标签,内部可根据需要添加适当的标签,以便更清楚的表达。 安全管理服务调用接口工厂。用于为调用者创建。 根据配置文件的小节定义的配置信息,创建相应的服务实现。 若调用的是()方法,是获取小节中的属性指定的服务实现。 33 类型定义注释示例生成的类库文档样式示例:34 类型定义注释生成文档样式示例3.2.4.3 成员声明注释在类的内部,对于成员的声明,注释应能够说明成员的功能用途,如果成员带有参数和返回值,应说明相应的含义。功能用途使用“”标签。参数使用“”标签,返

12、回值使用“”标签,另可根据成员的的调用应注意的问题和相关知识进行说明,可采用“” 标签进行备注说明,采用“” 标签提供编程。示例如下: 获取指定配置的安全管理服务调用接口。 配置标识。对应于配置项中的属性。 安全管理服务调用接口。 如果是程序识别的错误,将会抛出该类型的异常。 当前程序已经提供了三种服务调用实现,分别是:“本地调用()”、“服务调用()”、“调用()”。 = (); ( ) 35 类型定义注释代码示例生成的类库文档样式示例:36 类型定义注释生成文档样式示例3.2.4.4 代码段注释位于属性方法、成员方法内部代码实现,一般使用单行注释形式。示例如下: 检查输入有效性 ( ) (

13、); (, ) ) 若编号已经被其他用户使用 (, ); 获取事件代理,发出用户将被修改的事件()(); 持久化存取接口 = ();37 代码段注释代码示例3.3 代码书写风格以下是经常使用到的一些代码格式要求:3.3.1 缩进缩进是通过在每一行代码的前端添加一定数量的显示为空白的符号,在显示上区分出代码行之间的层次关系。一个缩进单位是4个空格符(不要直接使用字符,设置:工具-选项-文本编辑器-制表符-插入空格)。同一语法层级的多行语句要使用统一的缩进单位。在命名空间、类型定义、属性方法定义、分支循环定义等表达嵌套包含关系时要使用一个缩进单位。如果一条语句超过一行,从第二行开始要使用一个缩进单

14、位。3.3.2 空行空行是在代码中添加的只包含回车换行符的空白行。空行可以根据代码行在语法、逻辑上的相关性或内聚度分隔成多个代码块,从而提高代码的可阅读性。在使用命名空间与类型定义之间要添加一个空行。如果在同一代码文件中声明了不同的类型,则在不同的类型定义之间要添加一个空行。在类型的成员定义之间要添加一个空行(字段之间可没有),具体如下:1. 方法、属性成员之间。2. 属性与字段、方法与字段之间。3. 、与其他代码行之间。在一个方法内部(构造函数、属性方法、成员方法等):1. 方法中变量声明与语句之间。2. 方法中的多个逻辑步骤之间。3. 方法中的返回语句与其他的语句之间。注释与它注释的代码行

15、之间不空行,但与其他的代码行之间空一行。没有特殊原因,不允许出现连续空行。3.3.3 换行如果一条语句过长(超过了80个字符,或者超过代码编辑窗口的显示宽度),会造成语句阅读上的困难,必须对这条语句进行换行。换行要遵守缩进的要求。换行的位置的选择,尽量选择在操作符(“=”、“”、“”、“,”等)之后,不破坏代码的连贯性,易于理解。 = () ( ) (); ( 1 0 1 = 2, , , );38 换行示例3.3.4 空格空格即空格符。如果代码行中的表达式字符之间没有空格,会显得代码很密集、局促,也不好阅读。添加适量的空格,可有效缓解这种情况。在双目、三目运算符和操作数之间要添加空格。在左括

16、号“(”与关键字之间要添加空格。在参数(形参和实参)的多个参数之间要添加空格。在类型之间的继承、实现关系的“:”左右两侧要添加空格。在构造函数的继承的“:”左右两侧要添加空格。不要使用连续多个空格(缩进不在讨论范围内)。3.3.5 花括号花括号单独占一行。左花括号“”与上方相邻语句左对齐,保持同一缩进。右花括号“” 与左花括号 “”对齐,保持同一缩进。4 命名规范一致的命名模式是托管类库中可预知性与可发现性最重要的元素之一。对这些命名规范广泛的使用和理解将消除许多最常见的用户问题。本文提供 类型的命名规范。对于每个类型,还应该注意关于大写样式、区分大小写和措词的一些通用规则。4.1 大小写规则

17、 使用下面的三种标识符约定:u 大小写规则将标识符的首字母和后面连接的每个单词的首字母都大写。可以对三字符或更多字符的标识符使用 大小写。例如:u 大小写规则标识符的首字母小写,而每个后面连接的单词的首字母都大写。例如:u 大写规则标识符中的所有字母都大写。仅对于由两个或者更少字母组成的标识符使用该约定。例如:、可能还必须大写标识符以维持与现有非托管符号方案的兼容性,在该方案中所有大写字母经常用于枚举和常数值。一般情况下,在使用它们的程序集之外这些字符应当是不可见的。下表汇总了大写规则,并提供了不同类型的标识符的示例。标识符大小写规则示例命名空间类接口 注:总是以 I 前缀开始。枚举类型枚举值

18、委托私有的常量非私有的常量只读的静态字段私有的静态字段非私有的静态字段注:不建议使用,应使用静态属性。私有实例字段 ;非私有的实例字段 注:不建议使用,应使用属性。属性方法方法参数局部变量 = 0;事件4.2 区分大小写 为了避免混淆和保证跨语言交互操作,请遵循有关区分大小写的使用的下列规则: 1. 不要使用要求区分大小写的名称。对于区分大小写和不区分大小写的语言,组件都必须完全可以使用。不区分大小写的语言无法区分同一上下文中仅大小写不同的两个名称。因此,在创建的组件或类中必须避免这种情况。 2. 不要创建仅是名称大小写有区别的两个命名空间。例如不区分大小写的语言无法区分以下两个命名空间声明:

19、 ; ;3. 不要创建具有仅是大小写有区别的参数名称的函数。下面的示例是不正确的。 ( a, A)4. 不要创建具有仅是大小写有区别的类型名称的命名空间。在下面的示例中, p 和 p 是不适当的类型名称,原因是它们仅在大小写方面有区别。 例如: p p5. 不要创建具有仅是大小写有区别的属性名称的类型。在下面的示例中, 和 是不适当的属性名称,原因是它们仅在大小写方面有区别。 例如: , , 6. 不要创建具有仅是大小写有区别的方法名称的类型。在下面的示例中, 和 是不适当的方法名称,原因是它们仅在大小写方面有区别。 例如: () ()4.3 缩写 为了避免混淆和保证跨语言交互操作,区分缩写使

20、用下列规则: 1. 不要将缩写或缩略形式用作标识符名称的组成部分。例如,使用 ,而不要使用 。 2. 不要使用计算机领域中未被普遍接受的缩写。 3. 在适当的时候,使用众所周知的缩写替换冗长的词组名称。例如,用 作为 的缩写;用 作为 的缩写。 4. 在使用缩写时,对于超过两个字符长度的缩写,使用 大小写或 大小写。例如,使用 或 。但是,应当大写仅有两个字符的缩写,如,而不是 。 5. 不要在标识符或参数名称中使用缩写。如果必须使用缩写,对于由多于两个字符所组成的缩写请使用 大小写,虽然这和单词的标准缩写相冲突。4.4 措词 避免使用与常用的 命名空间重复的类名称。例如,不要将以下任何名称用

21、作类名称:、 或 。有关 命名空间的列表,请参见类库。另外,避免使用与以下关键字冲突的标识符: 4.5 避免类型名称混淆不同的编程语言使用不同的术语标识基本托管类型。类库设计人员必须避免使用语言特定的术语。请遵循本节中描述的规则以避免类型名称混淆。使用描述类型的含义的名称,而不是描述类型的名称。如果参数除了其类型之外没有任何语义含义,那么在这种罕见的情况下请使用一般性名称。例如,支持将各种数据类型写入到流中的类可以有以下方法。 ( ); ( ); ( ); ( ); ( );不要创建语言特定的方法名称,如下面的示例所示。 ( ); ( ); ( ); ( ); ( );下表列出基本数据类型名称

22、和它们的通用替换。 类型名称 类型名称 类型名称 类型名称 表示形式通用类型名称8 8161616 1616323232 323264646464 64 64643264例如,支持将从流读取各种数据类型的类可以有以下方法。 (); (); 64(); 32(); 16();上面的示例优先于下面的语言特定的替代方法。 (); (); (); (); ();4.6 命名空间命名规范 命名命名空间时的一般性规则是使用公司名称,后跟技术名称和可选的功能与设计,如下所示。例如:给命名空间名称加上公司名称或者其他知名商标的前缀可以避免两个已经发布的命名空间名称相同的可能性。例如, 是由 提供的 的一个适当

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

24、类使用相同的名称。例如,不要既提供 命名空间也提供 类。最后,请注意命名空间名称不必非得与程序集名称相似。例如,如果命名程序集 ,它没有必要非得包含 命名空间。规定公司内产品或项目,适用的命名空间的原则是:.产品/项目名称.模块标识4.7 类命名规范 以下规则概述命名类的规范: 1. 使用名词或名词短语命名类。 2. 使用 大小写规则。 3. 少用缩写。 4. 不要使用类型前缀,如在类名称上对类使用 C 前缀。例如,使用类名称 ,而不是 。 5. 不要使用下划线字符 (_)。 6. 有时候需要提供以字母 I 开始的类名称,虽然该类不是接口。只要 I 是作为类名称组成部分的整个单词的第一个字母,

25、这便是适当的。例如,类名称 就是适当的。 7. 在适当的地方,使用复合单词命名派生的类。派生类名称的第二个部分应当是基类的名称。例如, 对于从名为 的类派生的类是适当的名称,原因是 是一种 。请在应用该规则时进行合理的判断。例如, 对于从 派生的类是适当的名称。尽管按钮是一种控件,但是将 作为类名称的一部分将使名称不必要地加长。 下面是正确命名的类的示例: 4.8 接口命名规范 以下规则概述接口的命名规范: 1. 用名词或名词短语,或者描述行为的形容词命名接口。例如,接口名称 使用描述性名词。接口名称 使用名词短语。名称 使用形容词。 2. 使用 大小写规则。 3. 少用缩写。 4. 接口名称

26、加上字母 I 前缀,以指示该类型为接口。 5. 在定义类/接口对(其中类是接口的标准实现)时使用相似的名称。两个名称的区别应该只是接口名称上有字母 I 前缀。 6. 不要使用下划线字符 (_)。 以下是正确命名的接口的示例。 以下代码示例阐释如何定义 接口及其标准实现 类。 . : .4.9 枚举命名规范 枚举 () 值类型从 继承。以下规则概述枚举的命名规范: 1. 对于枚举类型和枚举值名称使用 大小写规则。 2. 少用缩写。 3. 不要在枚举类型名称上使用 后缀。 4. 对大多数枚举类型使用单数名称,但是对作为位域的枚举类型使用复数名称。 5. 总是将 添加到位域枚举类型。 4.10 委托

27、命名规范以下规则概述委托的命名规范: 1. 使用 大小写。 2. 不要使用匈牙利命名法。 3. 对委托处理程序名称使用 后缀。 4. 指定两个名为 和 e 的参数。 参数表示引发事件的对象。 参数始终是 类型的,即使在可以使用更为特定的类型时也如此。与事件相关联的状态封装在名为 e 的事件类的实例中。对 e 参数类型使用适当而特定的事件类。 5. 用 后缀命名事件参数类。 6. 建议用主谓短语或动词来命名委托。例如: 。 7. 使用动词运行时文法(动词的“”形式)表示“将要发生”含义的委托称,用过去式表示“已发生” 含义的委托名称。例如,可以取消的 委托应当具有 和 两个委托。不要使用或命名模

28、式。 8. 不要在委托名称中使用前缀或者后缀。例如,使用 ,而不要使用 。 以下示例阐释具有适当名称和参数的事件处理程序: ( , e);以下示例阐释正确命名的事件参数类: : x; y; ( x, y) = x; = y; X x; Y y; 4.11 常量字段命名规范 以下规则概述静态字段的命名规范: 1. 使用名词、名词短语或者名词的缩写命名常量字段。 2. 使用描述性名称,且名称应含义清晰,不要使用描述其类型的名称。 3. 私有常量字段使用大小写规则。4. 非私有的常量字段使用大小写规则。5. 不要在常量字段名称中使用匈牙利命名法的前缀。 4.12 静态字段命名规范 以下规则概述静态字

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

30、规则。应使用实例属性提供外部访问,不建议暴露外部可访问的实例字段。以下是正确命名的实例字段的示例: ; ;4.14 属性命名规范 以下规则概述属性的命名规范: 1. 使用名词或名词短语命名属性。 2. 使用描述性名称,且名称应含义清晰,不要使用描述其类型的名称。 3. 使用 大小写规则。 4. 不要使用匈牙利命名法。 5. 考虑用与属性的基础类型相同的名称创建属性。例如,如果声明名为 的属性,则属性的类型同样应该是 。以下代码示例阐释正确的属性命名: . 以下代码示例阐释提供其名称与类型相同的属性: . . . 以下代码示例不正确,原因是 属性是 类型的: . . . 在不正确的示例中,不可能

31、引用 枚举的成员。 将被解释为访问一个成员,该成员首先获取 属性(在 中为 类型,在 中为 类型)的值,然后再访问该值的某个成员(该成员必须是 32 的实例成员)。4.15 方法命名规范 以下规则概述方法的命名规范: 1. 使用动词或动词短语命名方法。 2. 使用大小写规则。 以下是正确命名的方法的示例:()()()4.16 方法参数命名规范 必须仔细遵守这些方法参数的命名规范,这非常重要,因为提供上下文相关帮助和类浏览功能的可视化设计工具会在设计器中对用户显示方法参数名称。以下规则概述方法参数的命名规范: 1. 对方法参数名称使用大小写规则。 2. 使用描述性名称,且名称应含义清晰,不要使用

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

33、法(动词的“”形式)表示“将要发生”含义的事件名称,用过去式表示“已发生” 含义的事件名称。例如,可以取消的 事件应当具有 事件和 事件。不要使用或命名模式。 5. 不要在事件声明上使用前缀或者后缀。例如,使用 ,而不要使用 。通常情况下,对于可以在派生类中重写的事件,应在类型上提供一个受保护的方法(称为 )。此方法只应具有事件参数 e,因为发送方总是类型的实例。 以下示例阐释具有适当名称和参数的事件处理程序: ( , e);以下示例阐释正确命名的事件参数类: ;4.19 数据库对象命名规范4.19.1 数据库名(开发过程中)【命名规则】产品或项目英文名称/简称+客户标记码+版本号其中客户标记码是客户的拼音或英文的习惯叫法,比如, 等,最后的部分是版本号,用以区分不同时期的版本。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号