当前位置:文档之家› 软件开发代码规范(C#版)

软件开发代码规范(C#版)

软件开发代码规范(C#版)拟制:日期:2007-2-13审核:日期:审核:日期:批准:日期:版权所有 ********有限公司修订纪录目录1、第一章命名规范 (4)1.1、第一节总则 (4)1.2、第二节变量命名规范 (4)1.2.1、CodeBehind内部命名规范 (4)1.2.2、控件命名规范 (5)1.3、第三节常量命名规范 (5)1.4、第四节命名空间、类、方法命名规范 (5)1.5、第五节接口命名规范 (6)1.6、第六节命名规范小结 (6)2、第二章代码注释规范 (6)2.1、第一节模块级注释规范(命名空间、类等) (6)2.2、第二节方法级注释规范 (7)2.2.1 、属性注释 (7)2.2.2 、方法注释 (7)2.3、第三节代码间注释规范 (8)3、第三章编写规范 (9)3.1、第一节格式规范 (9)3.2、第二节编程规范 (9)3.2.1 、程序结构要求 (9)3.2.2 、可读性要求 (10)3.2.3 、结构化要求 (10)3.2.4 、正确性与容错性要求 (10)3.2.5 、可重用性要求 (11)3.2.6 、interface使用注意事项 (11)3.2.7 、类使用注意事项 (11)3.2.8 、流程控制语句注意事项 (12)3.2.8 、其他应注意事项 (13)注:Pascal命名法则:即名称中所有单词的第一个字母大写其他字母使用小写形式。

Camel命名法则:即名称中第一个单词各个字母全部小写,其他部分遵循Pascal命名法则。

1、第一章命名规范1.1、第一节总则1.本命名规则除特殊提及外统一使用Camel命名法则。

如:controlMenu2.命名时尽量不使用拼音,更不可使用拼音缩写(专有名词除外)。

3.如果使用品牌名称命名时其大小写尽量保持和品牌名称一致的样式。

如:LuX则命名时,不要写成LUX,或者Lux,而应该保持与原品牌名称风格一致使用LuX4.使用专有名词或英文缩写命名时采用大写形式。

如:CNNIC5.禁止使用仅区分大小写的方式命名。

如:Abc与abc仅用大写A来区分,这样写在类C系语言中不会出错,但是不利于系统的迁移1.2、第二节变量命名规范1.2.1、CodeBehind内部命名规范1.公有字段/属性使用Pascal 命名规则,私有变量/保护变量/局部变量使用Camel命名规则,遵循动宾结构。

例:public class Hello{private string userName;private DateTime loginTime;private bool isOnline;public string UserName {get { return erName; }}}2.即使对于可能仅出现在几个代码行中的生存期很短的变量,仍然使用意义描述性的名称。

仅对于短循环索引使用单字母变量名,如 i 或 j3.在变量名中使用互补对,如 Min/Max、Begin/End 和 Open/Close。

4.当一个方法内部变量繁多的时候,可以使用Camel命名法则,其中第一个单词可以使用变量类型的缩写来说明以示区别。

例:string str Name;int int Age;object obj Person;1.2.2、控件命名规范1.控件命名使用控件缩写加名称的方式1.3、第三节常量命名规范常量名也应当有一定的意义,格式为 NOUN 或 NOUN_VERB。

常量名均为大写,字之间用下划线分隔。

例:private const bool WEB_ENABLEPAGECACHE_DEFAULT = true;private const int WEB_PAGECACHEEXPIRESINSECONDS_DEFAULT = 3600;private const bool WEB_ENABLESSL_DEFAULT = false;注:变量名和常量名最多可以包含 255 个字符,但是,超过 25 到 30 个字符的名称比较笨拙。

此外,要想取一个有实际意义的名称,清楚地表达变量或常量的用途,25 或 30 个字符应当足够了。

1.4、第四节命名空间、类、方法命名规范1.名字应该能够标识事物的特性。

2.名字尽量不使用缩写,除非它是众所周知的。

3.名字可以有两个或三个单词组成,但通常不应多于三个。

4.使用名词或名词短语命名类。

5.尽可能少用缩写。

6.不要使用下划线字符 (_)。

7.命名空间名称使用此格式:Snda + 项目名称 + 逻辑层名称例:namespace Snda.CodeTest.BR{public class FileStream{public void InPut(string para){}}}1.5、第五节接口命名规范和类命名规范相同,唯一区别是接口在名字前加上大写“I”前缀例:interface IDBCommand;interface IButton;1.6、第六节命名规范小结1、使用Pascal命名方式命名类、方法、属性和常量2、使用Camel命名方式命名局部变量和方法的参数3、接口使用Pascal命名方式,并且在前面添加“I”4、方法命名使用动宾结构,比如ShowDialog( )5、有返回值的方法命名应有单词来描述,比如GetObjectState( )6、避免使用带命名空间的类型,尽量用using关键字7、避免把using语句放到命名空间内8、控件命名使用控件缩写加名称的方式9、常量命名采用全部大写的形式,要想一个有实际意义的名称,清楚地表达常量的用途2、第二章代码注释规范2.1、第一节模块级注释规范(命名空间、类等)模块须以以下形式书写模块注释:/// (功能模块简述)/// </summary>/// <remarks>///名称:(或者编号,当模块繁多的时候以编号检索)///功能:///程序设计:///开发日期:///备注:///修改人:///修改日期:///备注:(如果多次修改,请重复以上三项)/// </remarks>public class TestSpace{}注意:详细说明都写在<remarks></remarks>内部,为的是既方便IDE动态帮助又方便自动化出工程文档,适用以下注释规范,不再赘述。

修改人和修改日期每次修改的时候都要自行添加上去。

2.2、第二节方法级注释规范2.2.1 、属性注释属性必须以以下形式给予注释,如果有备注的需求请加在<remarks></remarks>内部:/// <summary>/// 简述属性功能/// </summary>/// <remarks>/// 备注/// </remarks>public string Name;2.2.2 、方法注释/// <summary>/// (简述方法功能)/// </summary>/// <param name="<参数名称>"><参数说明></param>/// <returns>/// 对方法返回值的说明,该说明必须明确说明返回的值代表什么含义/// <example>(使用示例)</example>/// <remarks>///名称:(或者编号,当模块繁多的时候以编号检索)///功能:///程序设计:///开发日期:///备注:///修改人:///修改日期:///备注:(如果多次修改,请重复以上三项)/// </remarks>public void TestMethod(string Para){}2.3、第三节代码间注释规范代码间注释分为单行注释和多行注释:单行注释://<单行注释>多行注释:/*多行注释1多行注释2多行注释3*/代码中遇到语句块时必须添加注释(if,for,foreach,……),添加的注释必须能够说明此语句块的作用和实现手段(所用算法等等)。

但是显而易见的代码不易注释。

行间的注释量不得大于代码量的25%,不小于10%2.4、第四节功能变更注释规范当对某个现有的功能进行修改时,需要在该功能所在的方法<summary></ summary >内部加上注释,阐明变更内容、变更时间、变更人。

假如这一功能变更非常重要,请在模块描述中也加上相关注释。

建议格式如下://功能变更:XXXXX updated by who YYMMDD3、第三章编写规范3.1、第一节格式规范1.所有的缩进为1个Tab(设置1个Tab占4个空格空间),使用的默认设置。

2.在代码中垂直对齐左括号和右括号。

例:if (x == 0){this.Response.Write("用户编号必须输入!");}允许以下情况:if (x == 0) {this.Response.Write("用户编号必须输入!");}不允许以下情况:if (x == 0) { this.Response.Write("用户编号必须输入!"); } 3.为了防止在阅读代码时不得不滚动源代码编辑器,每行代码或注释在1024*800的显示频率下不得超过一显示屏。

4.当一行被分为几行时,通过将串联运算符放在每一行的末尾而不是开头,清楚地表示没有后面的行是不完整的。

5.每一行上放置的语句避免超过一条。

6.在大多数运算符之前和之后使用空格,这样做时不会改变代码的意图却可以使代码容易阅读。

例:int j = i + k;而不应写为int j=i+k;7.将大的复杂代码节分为较小的、易于理解的模块。

3.2、第二节编程规范3.2.1 、程序结构要求1.程序结构清晰,简单易懂,单个函数的程序行数不得超过100行。

2.打算干什么,要简单,直截了当,代码精简,避免垃圾程序。

3.尽量使用.NET库函数和公共函数(无特殊情况不要使用外部方法调用Windows的核心动态链接库API)。

4.不要随意定义全局变量,尽量使用局部变量。

3.2.2 、可读性要求1.保持注释与代码完全一致。

2.去除无效的注释3.处理过程的每个阶段都有相关注释说明。

4.利用缩进来显示程序的逻辑结构,缩进量一致并以Tab键为单位,定义Tab为 4个空格。

5.循环、分支层次不要超过五层。

6.注释可以与语句在同一行,也可以在上行,视语句的长短而定。

7.一目了然的语句不加注释。

8.注释的作用范围可以为:定义、引用、条件分支以及一段代码。

相关主题