配色: 字号:
软件开发编码规范
2013-06-10 | 阅:  转:  |  分享 
  








软件开发编码规范



















文件编号: 生效日期:2011年10月01日 版本号:V1.0 受控状态:0 密级:机密 总页数:6 正文:2 附录:0 编制:

日期: 审核:

日期: 批准:

日期:





基本要求

程序结构要求

新开发的类和方法,都采用:在DiaoYa文件夹下新建分部类的形式(partial),包括IBLL,BLL和DAL项目。

将\App\App_Start文件夹下的RouteConfig.cs,找到起始页设置,将其设置为自己开发的页面,此文件不迁入。

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

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

可读性要求

可读性第一,效率第二

保持注释与代码完全一致

每个源程序文件必须添加文件头注释说明,说明规格见规范

每个方法必须添加函数头注释说明,说明规格见规范

定义类、接口、枚举、结构、委托等类型时,必须添加注释说明

定义常量、变量、属性、事件等对象时,必须添加注释说明

处理过程的每个阶段应该添加相关的注释说明

在典型算法前必须添加注释说明

一目了然的语句不添加注释说明

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

利用缩进来显示程序的逻辑结构,缩进以Tab键为单位

结构化要求

禁止出现两条等价的支路

禁止GOTO语句

用if语句来强调只执行两组语句中的一组,禁止elsegoto和elsereturn

用case实现多路分支。

避免从循环引出多个出口。

函数只有一个出口

不使用条件赋值语句

避免不必要的分支

不要轻易用条件分支去替换逻辑表达式?

正确性与容错性要求

程序首先是正确,其次是优美

无法证明你的程序没有错误,因此在编写完一段程序后,应先回头检查

改一个错误时可能产生新的错误,因此在修改前首先考虑对其它程序的影响

所有变量在调用前必须被初始化

对所有的用户输入,必须进行合法性检查

不要比较浮点数的相等,如:10.00.1==1.0,不可靠

程序与环境或状态发生关系时,必须主动去处理发生的意外事件,如文件能否逻辑锁定、打印机是否联机等,,

例如:

try

{

}

catch

{

}

finally

{

}

可重用性要求

重复使用的完成相对独立功能的算法或代码应抽象为asp.net服务或类。

asp.net服务或类应考虑OO思想,减少外界联系,考虑独立性或封装性。

?



C#编程规范

适用范围

本标准适用于利用VisualC#,.。

命名

常量命名

下表描述了不同类型标识符的大小写规则:

标识符 大小写 示例 命名空间 Pascal namespaceCom.Techstar.ProductionCenter 类 Pascal publicclassDevsList 接口 Pascal publicinterfaceITableModel 方法 Pascal publicvoidUpdateData() 属性 Pascal PublicintLength{…} 事件 Pascal publiceventEventHandlerChanged; 字段 Camel privatestringfieldName; 枚举值 Pascal FileMode{Append} 参数 Camel publicvoidUpdateData(stringfieldName) 局部变量 Camel stringfieldName; ′避免使用缩写,如果一定要使用,就谨慎使用。同时,应该保留一个标准缩写的列表,并且在使用时保持一致。

,,,onstsingleDefaultConcentration=0.01

变量命名

普通类型的变量,使用有意义的名字命名

不可使用简称和无意义的名称诸如A,x1

intindex;

stringcustomerName;



类的私有数据成员变量命名以m_开始

Privateintm_Index;



方法内部的私有变量命名以小写字母开始,多个单词组合出来的变量,则首单词首字母小写,后面的单词首字母均大写.

intindex;

stringcustomerName;

特殊情况可以考虑一个字母的变量:

Graphicg;

类型命名



以class声明的类,都必须以名词或名词短语命名,体现类的作用。如:classIndicator当类是一个特性(Attribute)时,以Attribute结尾,当类是一个异常(Exception)时,以Exception结尾:

classColorSetException;

classCauseExceptionAttribute;

当类只需有一个对象实例(全局对象,比如Application等),必须以Class结尾,如:

classScreenClass

classSystemClass

当类只用于作为其他类的基类,根据情况,以Base结尾:

classIndicatorBase

枚举和结构

同样必须以名词或名词短语命名。最好体现枚举或结构的特点,如:

enumColorButtons''以复数结尾,表明这是一个枚举

structureCustomerInfoRecord''以Record结尾,表明这是一个结构体

委派类型

普通的委派类型以描述动作的名词命名,以体现委派类型实例的功能:

delegatevoidDataSeeker(stringSeekString)

用于事件处理的委派类型,必须以EventHandler结尾,如:

delegatevoidDataChangedEventHandler(ObjectSender,DataChangedEventArgse)

接口

与其他类型不同,接口必须要由I作为前缀,并用形容词命名,突出表现实现接口的类将具有什么能力:

interfaceISortable

方法命名

方法都必须以动词或动词短语命名。

voidOpen(stringcommandString);

intSetCopyNumber(intcopyNumber);

参数的命名方法,参考后面“变量的命名方法”。

属性命名

原则上,字段(Field)是不能公开的,要访问字段的值,一般使用属性。属性以简洁清晰的名词命名:

publicintConcentration;

publicCustomerTypesCustomer;

事件命名

事件是特殊的属性,只能在事件处理上下文中使用。命名的原则一般是动词或动词的分词,通过时态表明事件发生的时间:

eventClickEventHandlerClick;

eventColorChangedEventHanglerColorChanged;?

命名空间

通常,一个工程使用一个命名空间,使用根命名空间可以使代码更加整齐,容易修改。

命名空间的语法如:

namespaceVirtualScreen;

随便起一个命名空间的名字绝对不是一个好主意,一定要遵守上述规定。



以上只是列举的几个简单例子,更多的需要我们去挖掘,去学习,谢谢大家的支持。























狼奔

文件编号 ITCMOR-SWG-7304-01 版本 V1.0 修改状态 0 软件开发编码规范 生效日期 2011年10月01日 页码 第2页,共6页







献花(0)
+1
(本文系wqs0209首藏)