软件项目NET编码规范模板.docx
- 文档编号:15048029
- 上传时间:2023-06-29
- 格式:DOCX
- 页数:10
- 大小:19.18KB
软件项目NET编码规范模板.docx
《软件项目NET编码规范模板.docx》由会员分享,可在线阅读,更多相关《软件项目NET编码规范模板.docx(10页珍藏版)》请在冰点文库上搜索。
软件项目NET编码规范模板
.NET编码规范
版本:
V1.0
1介绍1
1.1目的1
1.2范围1
1.3参考文档1
2规范概述1
3规范详述1
3.1文件组织1
3.1.1源文件1
3.1.2目录安排2
3.2缩进2
3.2.1分行2
3.2.2空白2
3.3注释3
3.3.1块注释3
3.3.2单行注释3
3.3.3文档注释3
3.4变量声明4
3.4.1每行声明的数量4
3.4.2初始化4
3.5类和接口的声明4
3.6命名约定5
3.6.1大写风格5
3.6.2命名规则6
3.6.3class,struct和namespace命名规则6
3.6.4interface命名规则6
3.6.5enum命名规则6
3.6.6域命名规则7
3.6.7参数命名规则7
3.6.8变量命名规则7
3.6.9方法命名规则7
3.6.10属性命名规则7
3.6.11事件命名规则8
3.7代码细节规范8
1介绍
1.1目的
本文件的目的是描述用.NET编写代码过程中应遵循的规范,以确保编写出强壮可靠、符合规范的应用程序。
虽然这里的代码示例是用C#编写的,但如果使用另外一种编程语言,其中的大多数规则和原理也是适用的。
对于.net开发人员,应力求遵守此文档中的规范,代码审查时,此文档将作为重要的参考依据。
1.2范围
本文件适用于用.NET来实现的软件产品在编码实现过程中应遵循的规范。
1.3参考文档
[说明本文件的参考文档。
]
2规范概述
本规范为实现过程中用.NET来进行编码时应遵循的规范,主要内容包括:
文件组织、缩进、注释、变量声明、类和接口的声明、命名约定及代码细节规范。
在实现过程中的编码实现,代码走查活动中使用到此规范。
3规范详述
3.1文件组织
3.1.1源文件
把每个类都放在单独的文件中,文件名字和类名一致(用.CS作为扩展名)。
严禁将多个命名空间/类放在同一个源文件中(VS.NET自动生成的除外)。
3.1.2目录安排
为每个命名空间创建一个目录(如,对于MyProject.TestSuite.TestTier使用MyProject/TestSuite/TestTier作为路径,不要使用带“.”的命名空间)。
这样更易于映射命名空间到目录。
3.2缩进
3.2.1分行
如果表达式不适合单行显示,应根据下面通常的原则分行:
●一个逗号后换行
●在一个操作符后换行
●在表达式的高层次处换行
●新行与前一行在同一层次,并与表达式的起始对齐
方法分行的例子:
longMethodCall(expr1,expr2,
expr3,expr4,expr5);
算术表达式分行的例子:
好的:
var=a*b/(c–g+f)+
4*z;
坏的风格,要避免:
var=a*b/(c–g+
f)+4*z;
第一个是好的,因为分行符合高层次规则。
3.2.2空白
不要使用空格缩进,要是用Tabs,这个也是VS.NET默认的缩进符。
3.3注释
3.3.1块注释
通常要避免块注释,而使用C#标准的///注释来描述。
如果希望使用块注释,应该使用下面的风格:
/*Line1
*Line2
*Line3
*/
块注释很少使用,通常是用来注释掉大块的代码。
3.3.2单行注释
应该使用//注释掉一行代码,也可以用它注释掉代码块。
当单行注释用来做代码解释时,必须要缩进到与代码对齐。
3.3.3文档注释
单行XML注释的形式如下:
///
///此类型/字段注释
///
多行XML注释的形式如下:
///
///Thisexceptiongetsthrownassoonasa
///Bogusflaggetsset.
///
3.4变量声明
3.4.1每行声明的数量
每行只有一个声明,以方便注释,如:
intlevel;//indentationlevel
intsize;//sizeoftable
变量的命名意义要明确。
如果能够自解释,如indentLevel,就不用注释。
不好的:
inta,b;//a和b代表的意思不明确,即便注释,在其他地方也不知道具体含义
3.4.2初始化
尽量在局部变量声明时进行初始化,例如:
stringname=myObject.Name;
或
intval=time.Hours;
注意:
初始化数据链接等相关对象时,可以考虑使用Using语句,以方便CLR对其进行回收,如:
Using(SqlConnectionconn=newSqlConnection())
{
……
}
3.5类和接口的声明
当写C#类和接口时,应按照下面的格式规则:
在方法名字和参数列表的起始括号“(”之间没有空格
开括号“{”应出现在声明语句之后的下一行
闭括号“}”自己占一行,并缩进到对应的开括号位置
例如:
classMySample:
MyClass,IMyInterface
{
intmyInt;
publicMySample(intmyInt)
{
this.myInt=myInt;
}
voidInc()
{
++myInt;
}
voidEmptyMethod()
{
}
}
3.6命名约定
3.6.1大写风格
C#代码中的标志符符命名主要有以下3中风格:
Pascal风格:
大写每一个单词的第一个字符,如TestCounter。
Camel风格:
除了第一个单词,大写其它单词的第一个字符,如testCounter
全部大写:
如果一个标志符是只包含1,2或3个字符的缩写,可以全部大写,例如:
publicclassMath
{
publicconstdoublePI=......
}
3.6.2命名规则
在.Net中,通常认为使用下划线和匈牙利符号命名是不好的。
匈牙利符号定义了一组名字的前缀和后缀,来表示变量的类型。
这种命名风格在早期的windows编程中广泛使用。
在MFC编程中,还习惯使用m_作为成员变量的前缀。
这些风格在.Net中不应该使用。
记住:
一个好的变量名字应该描述语义,而不是类型。
但GUI代码是个例外。
所有GUI元素类型(如Button)的域和变量名字,应该以它的类型全名作为后缀,例如:
System.Windows.Forms.ButtoncancelButton;//或者btnCancel
System.Windows.Forms.TextBoxnameTextBox;//txtName
注意GUI变量首单词的首字幕是小写的。
3.6.3class,struct和namespace命名规则
●名字必须是名词或名词短语
●异常类要以Exception作为后缀
●不要使用任何前缀
●使用Pascal风格
3.6.4interface命名规则
●用名词,名词短语或者描述行为的形容词命名接口。
(如IComponent,IEnumbetable)
●使用Pascal风格
●使用I作为名字的前缀,I后面的字符(接口名字的第一个字符)要大写
3.6.5enum命名规则
●枚举类型名和值的名字都使用Pascal风格
●枚举类型和值都没有前缀和后缀
3.6.6域命名规则
●使用描述性的名字,能充分表示出变量的含义
●对于静态的readonly和const域,用名词,名词短语或名词缩写命名
●public域使用Pascal风格
●protected和private域使用Camel风格
●要注意的是:
CONST常量中的名词短语全部大写,且用下划线分割,例如
●publicconstintMAX_COUNT;
3.6.7参数命名规则
●使用描述性的名字,能充分表示出变量的含义
●使用Camel风格
3.6.8变量命名规则
●尽量使用含义明确的名字
●如果变量仅用来在循环中计数,应优先使用i,j,k,l,m,n
●使用Camel风格
3.6.9方法命名规则
●用动词或动词短语命名
●使用Pascal风格
3.6.10属性命名规则
●使用名词或名词短语命名
●使用Pascal风格
3.6.11事件命名规则
●事件控制器要带有EventHandler后缀
●使用sender和e命名两个参数
●事件参数类要带有EventArgs后缀
●考虑使用动词命名事件
●对于有“之前”或“之后”概念的事件,要使用现在时或过去时命名
●使用Pascal风格
3.7代码细节规范
1.原则上,尽量不要手工的修改机器产生的代码。
2.避免利用注释解释显而易见的代码。
代码应该可以自解释。
好的代码本身就应具体良好的可读性,所使用的变量和方法命名一般情况下不需要注释。
3.在捕获(catch)语句的抛出异常(如果需要的话)子句中(throw),总是抛出原始异常,用以维护原始错误的堆栈分配。
4.避免方法的返回值是错误代码。
5.避免在条件语句中调用返回bool值的函数。
可以使用局部变量并检查这些局部变量。
这可防止诸如在循环调用时产生的性能损失。
6.不要提供public和protected的成员变量,使用属性代替他们。
7.避免在继承中使用new而使用override来进行替换。
8.除非使用interop(COM+或其他的dll)代码否则不要使用不安全的代码(unsafecode)。
9.避免显式的转换,使用as操作符进行兼容类型的转换。
10.在调用委托之前一定要检查它是否为null。
11.不要直接编写可能会更改的基于配置的字符串,比如连接字符串。
12.当需要构建较长的字符串的时候,例如循环的对字符串进行连接操作,应该考虑使用StringBuilder不要使用string来处理。
13.原则上不应使用goto语句,除非在能够大大减轻编码的复杂性,并不影响可读性的前提下才允许使用。
14.在switch语句中总是要有default子句。
15.总是选择使用C#内置(一般的generics)的数据结构。
16.初始化类的实例时,除非十分必要,否则不要赋null值。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 项目 NET 编码 规范 模板