ASP.NET的软件开发规范_转载
1.排版
序号
总 则 条 款
说明
1.1
较长的语句(>80字符)要分成多行书写,长表达式要在低优先级操作符处划分新行,操作符放在新行之首,划分出的新行要进行适当的缩进,使排版整齐,语句可读。
1.2
程序块要采用缩进风格编写,缩进的空格数为4个。
用空格缩进,不用Tab键!
1.3
相对独立的程序块之间、变量说明之后必须加空行。
1.4
若函数或过程中的参数较长,则要进行适当的划分。
Public Void Test(string 1,string 2,
int 1,int 2)
1.5
避免在条件表达式内调用方法
实例:if(add(XXX)){}
建议:Bool flg = add(XXX);
If(flg){}
1.6
避免使用foreach循环不可变量类型集合,如字符串数组。
1.7
只对具有并行条件逻辑的简单操作使用switch/case语句。
1.8
对于短条件序列和复杂条件,优先使用嵌套if/else语句,而不是switch/case。
1.9
函数或过程的开始、结构的定义及循环、判断等语句中的代码都要采用缩进风格,case语句下的情况处理语句也要遵从语句缩进要求。
1.10
程序块的分界符(如C/C++语言的大括号‘{’和‘}’)应各独占一行并且位于同一列,同时与引用它们的语句左对齐。在函数体的开始、类的定义、结构的定义、枚举的定义以及if、for、do、while、switch、case语句中的程序都要采用如上的缩进方式。
1.11
在两个以上的关键字、变量、常量进行对等操作时,它们之间的操作符之前、之后或者前后要加空格;进行非对等操作时,如果是关系密切的立即操作符(如->、==、<>),后不应加空格。
1.12
循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分,长表达式要在低优先级操作符处划分新行,操作符放在新行之首。
1.13
不允许把多个短语句写在一行中,即一行只写一条语句。
1.14
if、while、for、default、do等语句自占一行。
2.注释
序号
总 则 条 款
说明
2.1
一般情况下,源程序有效注释量必须在20%以上。
2.2
源文件头部应进行注释,列出:版权说明、版本号、生成日期、作者、模块目的/功能或其它需要注释的说明等。
2.3
HMTL等格式的网页文件头部应使用“<%-- /* …… */ --%>”进行注释,列出:版权说明、版本号、生成日期、主要函数和网页的功能、修改日志等。
2.4
函数头部应进行注释,列出:函数的目的/功能、输入参数、输出参数、返回值等。
2.5
边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码的一致性。不再有用的注释要删除。
2.6
注释的内容要清楚、明了,含义准确,防止注释二义性。
2.7
避免在注释中使用缩写,特别是非常用缩写。
2.8
注释应与其描述的代码相近,对代码的注释应放在其上方或右方(对单条语句的注释)相邻位置,不可放在下面,如放于上方则需与其上面的代码用空行隔开。
2.9
数据结构声明(包括数组、结构、类、枚举等),如果其命名不是充分自注释的,必须加以注释。对数据结构的注释应放在其上方相邻位置,不可放在下面;对结构中的每个域的注释放在此域的右方。
2.10
全局变量要有较详细的注释,包括对其功能、取值范围、哪些函数或过程存取它以及存取时注意事项等的说明。
2.11
注释与所描述内容进行同样的缩排。
2.12
对变量的定义和分支语句(条件分支、循环语句等)必须编写注释。
2.13
对于switch语句下的case语句,如果因为特殊情况需要处理完一个case后进入下一个case处理,必须在该case语句处理完、下一个case语句前加上明确的注释。
3.标识符命名
序号
总 则 条 款
说明
3.1
标识符的命名要清晰、明了,有明确含义,同时使用完整的单词或大家基本可以理解的缩写,避免使人产生误解.
String str_Password;
3.1
不要用汉语拼音做标识符的命名,可以用金山词霸(或其它单词工具)中的单词做为命名的标准。
3.2
命名中若使用特殊约定或缩写,则要有注释说明。
Public string str_password //系统登录密码
3.3
对于全局或页面级变量命名,禁止取单个字符(如i、j、k...),建议除了要有具体含义外,还能表明其变量类型、数据类型等,但i、j、k作局部循环或方法中变量是允许的。
错误:int I;
允许:
for(int i=0;i<count;i++)
3.4
命名规范必须与所使用的系统风格保持一致,并在同一项目中统一,比如采用UNIX的全小写加下划线的风格或大小写混排的方式,不要使用大小写与下划线混排的方式,但是不能在同一个项目中使用两种不同风格。
风格1:string str_UserName;
风格2:string strUserName;
3.5
使用2-3个字母组成的前缀标记符来标识变量的数据类型以及基本数据类型的符号常量。
String str_UserName;
4.数据库命名
序号
总 则 条 款
说明
4.1
数据库、表的命名:根据项目的中文名称通过金山词霸查到的单词做为数据库的名称。数据库命名要用公司英文名称缩写(大写)做前缀,系统英文含义名称做后缀,后缀长度不应超过15。
例如:
1.固得派(GoodPai)系统
Gp_系统英文名称
2.固得派(GoodPai)系统表
模块:登陆注册、添加删除
数据库命名:
Gp_login_表名;
4.2
字段名称命名不要用中文和汉语拼音。字段名称不能超过15个字符。
4.3
存储过程命名用大写P做前缀加上功能模块再加后缀,后缀不得超过15个字符。
P_Login_GetMaxID;
4.4
视图命名用大写V做前缀加上功能模块再加后缀,后缀不得超过15个字符
V_Login_AllUserInfo;
4.5
使用2-3个字母组成的前缀标记符来标识变量的数据类型以及基本数据类型的符号常量。
String str_UserName;
5.类、函数过程的命名
序号
总 则 条 款
说明
5.1
函数,过程,类的命名不能使用单个的英文字母,必需使用英文单词做为名称。
5.2
类、对象命名首字母必须小写,其它单词首字母大写。
类:getStudentsInfo;
变量:string strUserName;
5.3
方法、属性命名首字母大写。
方法:public void GetMaxID();
属性:Form1.ID = this.txtUserID.Text;
6.可读性
序号
总 则 条 款
说明
6.1
注意运算符的优先级,并用括号明确表达式的操作顺序,避免使用默认优先级。
6.2
避免使用不易理解的数字,用有意义的标识来替代。涉及物理状态或者含有物理意义的常量,不应直接使用数字,必须用有意义的枚举或宏来代替。
7.变量
序号
总 则 条 款
说明
7.1
去掉没必要的公共变量。
7.2
公共变量命名在系统开发前就做好,以每个系统名称加上pub得到全局变量名称。
7.3
仔细定义并明确公共变量的含义、作用、取值范围及公共变量间的关系。
7.4
当向公共变量传递数据时,要十分小心,防止赋与不合理的值或越界等现象发生。
7.5
防止局部变量与公共变量同名。
7.6
尽量在声明变量的语句将变量初始化,严禁使用未经初始化的变量作为右值。
错误: Int I;
Int b=I;
正确: Int I=6;
Int B=I;
7.7
使用要求的最简单的数据类型、列表或对象。例如,一般使用int类型,除非知道需要存储64位的值,才使用long类型
7.8
始终使用内置C#数据类型别名,而不是.NET公共类型系统(CTS),包括:
? 使用short不用System.Int16
? 使用int不用System.Int32
? 使用long不用System.Int64
? 使用string不用System.String
7.9
只是将成员变量声明为private,使用属性为带有public、protected或internal访问修饰符的变量提供访问。
7.10
浮点值在小数点前后至少应该各包括一个数字。
例:float 11.0;
7.11
不要在循环内连接字符串
7.12
不要将字符串与String.Empty或””相比较来检查空字符串,而是使用String.Length==0进行比较。
8.函数和过程
序号
总 则 条 款
说明
8.1
对所调用函数的错误返回码要仔细、全面地处理。
8.2
明确函数功能,精确(而不是近似)地实现函数设计。
9.异常处理
序号
总 则 条 款
说明
9.1
使用验证来避免异常。
9.2
不得声明空try/catch。
9.3
避免在catch块内嵌套try/catch。
9.4
只捕获可以处理的异常
9.5
避免再次引发异常,而是允许其冒泡。
9.6
只使用finally块从try语句中释放资源
10.代码测试与维护
序号
总 则 条 款
说明
10.1
单元测试要求至少达到语句覆盖达80%以上。
10.2
单元测试开始要跟踪每一条语句,并观察数据流及变量的变化。
10.3
清理、整理或优化后的代码要经过审查及测试。
10.4
代码版本升级要经过严格测试。
10.5
使用工具软件对代码版本进行维护。
11.网页设计相关
序号
总 则 条 款
说明
11.1
html头一般需要遵循以下格式:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>自己的窗体命名</title>
<link rel="stylesheet" href="some.css" type="text/css">
<script language="javascript">
//some javascript
</script>
</head>
注意:必须指定一个有意义的<title>,严禁出现“Untitled”或“未命名”之类的<title>。
特别提示:这是所有软件开发人员必须认真遵守和执行的开发规范,成功源于细节,程序开发更需如此。
序号
总 则 条 款
说明
1.1
较长的语句(>80字符)要分成多行书写,长表达式要在低优先级操作符处划分新行,操作符放在新行之首,划分出的新行要进行适当的缩进,使排版整齐,语句可读。
1.2
程序块要采用缩进风格编写,缩进的空格数为4个。
用空格缩进,不用Tab键!
1.3
相对独立的程序块之间、变量说明之后必须加空行。
1.4
若函数或过程中的参数较长,则要进行适当的划分。
Public Void Test(string 1,string 2,
int 1,int 2)
1.5
避免在条件表达式内调用方法
实例:if(add(XXX)){}
建议:Bool flg = add(XXX);
If(flg){}
1.6
避免使用foreach循环不可变量类型集合,如字符串数组。
1.7
只对具有并行条件逻辑的简单操作使用switch/case语句。
1.8
对于短条件序列和复杂条件,优先使用嵌套if/else语句,而不是switch/case。
1.9
函数或过程的开始、结构的定义及循环、判断等语句中的代码都要采用缩进风格,case语句下的情况处理语句也要遵从语句缩进要求。
1.10
程序块的分界符(如C/C++语言的大括号‘{’和‘}’)应各独占一行并且位于同一列,同时与引用它们的语句左对齐。在函数体的开始、类的定义、结构的定义、枚举的定义以及if、for、do、while、switch、case语句中的程序都要采用如上的缩进方式。
1.11
在两个以上的关键字、变量、常量进行对等操作时,它们之间的操作符之前、之后或者前后要加空格;进行非对等操作时,如果是关系密切的立即操作符(如->、==、<>),后不应加空格。
1.12
循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分,长表达式要在低优先级操作符处划分新行,操作符放在新行之首。
1.13
不允许把多个短语句写在一行中,即一行只写一条语句。
1.14
if、while、for、default、do等语句自占一行。
2.注释
序号
总 则 条 款
说明
2.1
一般情况下,源程序有效注释量必须在20%以上。
2.2
源文件头部应进行注释,列出:版权说明、版本号、生成日期、作者、模块目的/功能或其它需要注释的说明等。
2.3
HMTL等格式的网页文件头部应使用“<%-- /* …… */ --%>”进行注释,列出:版权说明、版本号、生成日期、主要函数和网页的功能、修改日志等。
2.4
函数头部应进行注释,列出:函数的目的/功能、输入参数、输出参数、返回值等。
2.5
边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码的一致性。不再有用的注释要删除。
2.6
注释的内容要清楚、明了,含义准确,防止注释二义性。
2.7
避免在注释中使用缩写,特别是非常用缩写。
2.8
注释应与其描述的代码相近,对代码的注释应放在其上方或右方(对单条语句的注释)相邻位置,不可放在下面,如放于上方则需与其上面的代码用空行隔开。
2.9
数据结构声明(包括数组、结构、类、枚举等),如果其命名不是充分自注释的,必须加以注释。对数据结构的注释应放在其上方相邻位置,不可放在下面;对结构中的每个域的注释放在此域的右方。
2.10
全局变量要有较详细的注释,包括对其功能、取值范围、哪些函数或过程存取它以及存取时注意事项等的说明。
2.11
注释与所描述内容进行同样的缩排。
2.12
对变量的定义和分支语句(条件分支、循环语句等)必须编写注释。
2.13
对于switch语句下的case语句,如果因为特殊情况需要处理完一个case后进入下一个case处理,必须在该case语句处理完、下一个case语句前加上明确的注释。
3.标识符命名
序号
总 则 条 款
说明
3.1
标识符的命名要清晰、明了,有明确含义,同时使用完整的单词或大家基本可以理解的缩写,避免使人产生误解.
String str_Password;
3.1
不要用汉语拼音做标识符的命名,可以用金山词霸(或其它单词工具)中的单词做为命名的标准。
3.2
命名中若使用特殊约定或缩写,则要有注释说明。
Public string str_password //系统登录密码
3.3
对于全局或页面级变量命名,禁止取单个字符(如i、j、k...),建议除了要有具体含义外,还能表明其变量类型、数据类型等,但i、j、k作局部循环或方法中变量是允许的。
错误:int I;
允许:
for(int i=0;i<count;i++)
3.4
命名规范必须与所使用的系统风格保持一致,并在同一项目中统一,比如采用UNIX的全小写加下划线的风格或大小写混排的方式,不要使用大小写与下划线混排的方式,但是不能在同一个项目中使用两种不同风格。
风格1:string str_UserName;
风格2:string strUserName;
3.5
使用2-3个字母组成的前缀标记符来标识变量的数据类型以及基本数据类型的符号常量。
String str_UserName;
4.数据库命名
序号
总 则 条 款
说明
4.1
数据库、表的命名:根据项目的中文名称通过金山词霸查到的单词做为数据库的名称。数据库命名要用公司英文名称缩写(大写)做前缀,系统英文含义名称做后缀,后缀长度不应超过15。
例如:
1.固得派(GoodPai)系统
Gp_系统英文名称
2.固得派(GoodPai)系统表
模块:登陆注册、添加删除
数据库命名:
Gp_login_表名;
4.2
字段名称命名不要用中文和汉语拼音。字段名称不能超过15个字符。
4.3
存储过程命名用大写P做前缀加上功能模块再加后缀,后缀不得超过15个字符。
P_Login_GetMaxID;
4.4
视图命名用大写V做前缀加上功能模块再加后缀,后缀不得超过15个字符
V_Login_AllUserInfo;
4.5
使用2-3个字母组成的前缀标记符来标识变量的数据类型以及基本数据类型的符号常量。
String str_UserName;
5.类、函数过程的命名
序号
总 则 条 款
说明
5.1
函数,过程,类的命名不能使用单个的英文字母,必需使用英文单词做为名称。
5.2
类、对象命名首字母必须小写,其它单词首字母大写。
类:getStudentsInfo;
变量:string strUserName;
5.3
方法、属性命名首字母大写。
方法:public void GetMaxID();
属性:Form1.ID = this.txtUserID.Text;
6.可读性
序号
总 则 条 款
说明
6.1
注意运算符的优先级,并用括号明确表达式的操作顺序,避免使用默认优先级。
6.2
避免使用不易理解的数字,用有意义的标识来替代。涉及物理状态或者含有物理意义的常量,不应直接使用数字,必须用有意义的枚举或宏来代替。
7.变量
序号
总 则 条 款
说明
7.1
去掉没必要的公共变量。
7.2
公共变量命名在系统开发前就做好,以每个系统名称加上pub得到全局变量名称。
7.3
仔细定义并明确公共变量的含义、作用、取值范围及公共变量间的关系。
7.4
当向公共变量传递数据时,要十分小心,防止赋与不合理的值或越界等现象发生。
7.5
防止局部变量与公共变量同名。
7.6
尽量在声明变量的语句将变量初始化,严禁使用未经初始化的变量作为右值。
错误: Int I;
Int b=I;
正确: Int I=6;
Int B=I;
7.7
使用要求的最简单的数据类型、列表或对象。例如,一般使用int类型,除非知道需要存储64位的值,才使用long类型
7.8
始终使用内置C#数据类型别名,而不是.NET公共类型系统(CTS),包括:
? 使用short不用System.Int16
? 使用int不用System.Int32
? 使用long不用System.Int64
? 使用string不用System.String
7.9
只是将成员变量声明为private,使用属性为带有public、protected或internal访问修饰符的变量提供访问。
7.10
浮点值在小数点前后至少应该各包括一个数字。
例:float 11.0;
7.11
不要在循环内连接字符串
7.12
不要将字符串与String.Empty或””相比较来检查空字符串,而是使用String.Length==0进行比较。
8.函数和过程
序号
总 则 条 款
说明
8.1
对所调用函数的错误返回码要仔细、全面地处理。
8.2
明确函数功能,精确(而不是近似)地实现函数设计。
9.异常处理
序号
总 则 条 款
说明
9.1
使用验证来避免异常。
9.2
不得声明空try/catch。
9.3
避免在catch块内嵌套try/catch。
9.4
只捕获可以处理的异常
9.5
避免再次引发异常,而是允许其冒泡。
9.6
只使用finally块从try语句中释放资源
10.代码测试与维护
序号
总 则 条 款
说明
10.1
单元测试要求至少达到语句覆盖达80%以上。
10.2
单元测试开始要跟踪每一条语句,并观察数据流及变量的变化。
10.3
清理、整理或优化后的代码要经过审查及测试。
10.4
代码版本升级要经过严格测试。
10.5
使用工具软件对代码版本进行维护。
11.网页设计相关
序号
总 则 条 款
说明
11.1
html头一般需要遵循以下格式:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>自己的窗体命名</title>
<link rel="stylesheet" href="some.css" type="text/css">
<script language="javascript">
//some javascript
</script>
</head>
注意:必须指定一个有意义的<title>,严禁出现“Untitled”或“未命名”之类的<title>。
特别提示:这是所有软件开发人员必须认真遵守和执行的开发规范,成功源于细节,程序开发更需如此。