软件开发规范

1. 目的...................................................................................................................................................... 22. 范围...................................................................................................................................................... 23. 注释规范.............................................................................................................................................. 24. 命名总体规则...................................................................................................................................... 35. 命名规范.............................................................................................................................................. 46. 编码规则.............................................................................................................................................. 87. 编程准则............................................................................................................................................ 108. 代码包规范........................................................................................................................................ 119. 源代码的管理.................................................................................................................................... 1210. 输入控制校验规则.......................................................................................................................... 1311. 数据库开发规则.............................................................................................................................. 13

1. 目的

为了统一公司软件开发的设计过程中关于代码编写时的编写规范和具体开发工作时的编程规范,保证代码的一致性,便于交流和维护,特制定此规范。2. 范围

本规范适用于开发组全体人员,作用于软件项目开发的代码编写阶段和后期维护阶段。3. 注释规范

3.1.

概述

a) 注释要求中文及中文的标点符号。b) 注释中,应标明对象的完整的名称及其用途,但应避免对代码过于详细的描述。c) 每行注释的最大长度为100个字符。d) 将注释与注释分隔符用一个空格分开。e) 不允许给注释加外框。f) 编码的同时书写注释。g) 重要变量必须有注释。

h) 变量注释和变量在同一行,所有注释必须对齐,与变量分开至少两个空格。如:

string title; //标题

i) j) k) l) m) 典型算法必须有注释。

在循环和逻辑分支地方的上行必须就近书写注释。程序段或语句的注释在程序段或语句的上一行

在代码交付之前,必须删掉临时的或无关的注释。

为便于阅读代码,每行代码的长度应少于100个字符。

3.3. 模块(类)注释

模块开始必须以以下形式书写模块注释:

///


///说明:///作者:作者中文名

///创建时间:///

///修改记录://///////{

2012-01-01修改人名称修改功能描述2012-01-02修改人名称修改功能描述2012-01-03修改人名称修改功能描述

public class Order

}

3.4. 类属性注释

在类的属性必须以以下格式编写属性注释:

///

///属性说明///

public DateTime AddTime;

3.5. 方法注释

在类的方法声明前必须以以下格式编写注释

///

///方法说明///

///参数说明

///对方法返回值的说明,该说明必须明确说明返回的值代表什么含义///修改记录://///////{}

2012-01-01修改人名称修改描述2012-01-02修改人名称修改描述2012-01-03修改人名称修改描述

public int Add (OrderInfomodel)

3.6. 代码间注释

代码间注释分为单行注释和多行注释:

单行注释://多行注释:/*

多行注释1多行注释2多行注释3*/或者//多行注释1//多行注释2//多行注释3

代码中遇到语句块时必须添加注释(if,for,foreach,……),添加的注释必须能够说明此语句块的作用和实现手段(所用算法等等)。

具体可参考XML 文档注释(C#编程指南)

4. 命名总体规则

名字应该能够标识事物的特性,是有意义的,描述性的词语。能够一眼看出它作什么。别使用会引起误解的名字。如果名字一目了然,就无需用文档来解释方法的功能了。名字尽量使用英文单词。

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

名字可以有两个或三个单词组成,但不应多于三个,控制在3至30个字母以内。

在名字中,多个单词用大写第一个字母(其它字母小写)来分隔。例如:IsSuperUser。名字尽量使用前缀而不是后缀。

名字中的单词尽量使用名词,如有动词,也尽量放在后面。例如:FunctionUserDelete(而不是FunctionDeleteUser)。

在具体任务开发中,如果有特定的命名约定,则在相应的软件开发计划中予以明确定义及上报。5. 命名规范

具体可参考微软命名规范

5.1. 命名规范样式的分类

名称Pascal 规则Camel 规则Upper 规则标识符

解释

首字母和后面的每个单词的首字母都大写;其他字母小写首字母小写,而后面的每个单词的首字母大写;其他字母小写所有字母都大写,中间用下划线分隔

命名格式

例子

public int GetTypeID(string

标识符、参数、局部变量

Camel 规则

typeName) {int typeID; …}

Private 、Protected 的实例字段界面控件

Camel 规则Camel 规则

private string redValue; protected bool isOk; private Label lblAlarm; namespace System.IO {…}public

Pascal 规则

System.Drawing.Color BackColor {…}

缩写必须是被普遍接受、众所周知的缩写例子HelloWorld helloWorld

PI 备注

缩写Upper 规则

除上面的标识符外(包括但不限于:类名、方法名、命名空间)

5.2. 命名原则

a) 有意义的,描述性的词语来命名。能够一眼看出它作什么。别使用会引起误解的名字。如果名字一目了然,就无需用文档来解释方法的功能了。

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

c) 名字尽量使用英文单词,特殊情况下才使用拼音。

d). 除用于循环,别使用单个字母的变量象i, n, x 等.而要使用index, temp 等。for (int i =0; i

类名应该为名词及名词短语,尽可能使用完整的词.使用Pascal 规则。

不要使用类前缀-。不要使用下划线字符(_)。不要使用任何类前缀(比如C)。有时候需要提供以字母I 开始的类名称,虽然该类不是接口。只要I 是作为类名称组成部分的整个单词的第一个字母,这便是适当的。例如,类名称IdentityStore 就是适当的。

在适当的地方,使用复合单词命名派生的类。派生类名称的第二个部分应当是基类的名称。

例如,ApplicationException 对于从名为Exception 的类派生的类是适当的名称,原因是ApplicationException 是一种Exception。请在应用该规则时进行合理的判断。例如,Button 对于从Control 派生的类是适当的名称。尽管按钮是一种控件,但是将Control 作为类名称的一部分将使名称不必要地加长。

public class FileStream {}

f) 接口命名规则

接口名称应该为名词及名词短语或者描述其行为的形容词,尽可能使用完整的词.(Example:IComponent or IEnumberable) 使用Pascal 规则。

使用字符I 为前缀,并紧跟一个大写字母(即接口名的第一个字母大写)public interface IComponent {}g) 枚举命名规则

对于Enum 类型和值名称使用Pascal 规则。少用缩写。

不要在Enum 类型名称上使用Enum 后缀。

public enum FileMode {

Create, CreateNew, Open,

OpenOrCreate, Truncate }

h) 静态常量使用名词及名词短语命名规则使用Upper 规则(全部大写,中间用下划线分隔)int PI =3.1415926

i) 参数及非常量变量命名举例

使用描述性的命名,名称应该明确表达参数的意义及类型,优先满足参数的意义描述使用Camel 规则

不要对字段名或静态字段名应用前缀。具体说来,不要对字段名称应用前缀来区分静态和非静态字段。例如,应用g_或s_前缀是不正确的。

j) Web UI 类的变量命名可以通过特定的规则加入前缀Type GetType (stringtypeName) 使用Pascal 规则

k) 对方法名采用一致的动词/宾语或宾语/动词顺序。

例如,将动词置于前面时,所使用的名称诸如InsertWidget 和InsertSprocket;将宾语置于前面时,所使用的名称诸如WidgetInsert 和SprocketInsert。

推荐名称应该为动词或动词短语.例如Save ,SaveCustomer ,而不要使用CustomerSave 。

不要在方法中重复类的名称。例如,如果某个类已命名为Book,则不要将某个方法称为Book.CloseBook,而可以将方法命名为Book.Close。

l) 属性命名规则

名称应该为名词及名词短语使用Pascal 规则

对于bool 型属性或者变量使用Is(is)作为前缀,不要使用Flag 后缀,例如应该使用IsDeleted,而不要使用DeleteFlag

public enum Color {...}m) 集合命名规则

名称应该为名词及名词短语使用Pascal 规则

名称后面追加“Collection”

n) 事件命名规则

event handlers 命名使用EventHandler 后缀.两个参数分别使用sender 及e 使用Pascal 规则

事件参数使用EventArgs 后缀

事件命名使用语法时态反映其激发的状态,例如Changed,Changing.考虑使用动词命名.

public delegate void MouseEventHandler (object sender, MouseEvent e); public class MouseEventArgs :EventArgs {

int x; int y;

public MouseEventArgs(int x, int y) {

this .x =x; this .y =y; }

public int X {

get {return x; }}

public int Y {

get {return y; }}}

6. 编码规则

6.1. 错误检查规则

a) 编程中要考虑方法的各种执行情况,尽可能处理所有流程情况。b) 检查所有的系统调用的错误信息,除非要忽略错误。

c) 将方法分两类:一类为与屏幕的显示无关,另一类与屏幕的显示有关。对于与屏幕显示无关的方法,方法通过返回值来报告错误。对于与屏幕显示有关的方法,方法要负责向用户发出警告,并进行错误处理。

d) 错误处理代码一般放在方法末尾。

e) 对于通用的错误处理,可建立通用的错误处理方法,处理常见的通用的错误。

6.2. 大括号规则

将大括号放置在关键词下方的同列处,例如:if (条件表达式)while (条件表达式){{

...

}}6.3. 缩进规则

使用一个两个空格为每层次缩进。例如:

void func(){

if (false ) {

if (true ) {

while (false )

...

{}}}}

6.4小括号规则

a) 不要把小括号和关键词(if、while等)紧贴在一起,要用空格隔开它们。b) 不要把小括号和方法名紧贴在一起。

c) 除非必要,不要在Return 返回语句中使用小括号。因为关键字不是方法,如果小括号紧贴着方法名和关键字,二者很容易被看成是一体的。

6.5if else 规则

如果你有用到else if 语句的话,通常最好有一个else 块以用于处理未处理到的其他情况。可以的话放一个记录信息注释在else 处,即使在else 没有任何的动作。其格式为:

if (条件1) //注释

{}

else if (条件2) //注释{}else //注释{}

注:if和循环的嵌套最多允许4层6.6比较规则

总是将恒量放在等号/不等号的左边。一个原因是假如你在等式中漏了一个等号,语法检查器会为你报错。第二个原因是你能立刻找到数值而不是在你的表达式的末端找到它。例如:

if (6==errorNum ) ...

6.7Case 规则

default case 总应该存在,如果不允许到达,则应该保证:若到达了就会触发一个错误。Case的选择条件最好使用int 或string 类型。

6.8对齐规则

变量的申明和初始化都应对齐。例如:

int m_iCount;int i,j; float m_fIncome,m_fPay;m_iCount=0; i =1; m_fIncome=0.3; 6.9单语句规则

除非这些语句有很密切的联系,否则每行只写一个语句。6.10单一功能规则

原则上,一个程序单元(方法)只完成一项功能。6.11简单功能规则

原则上,一个程序单元的代码应该限制在一页内(25~30行)。6.12独立赋值规则

嵌入式赋值不利于理解程序,同时可能回造成意想不到的副作用,应尽量编写独立的赋值语句。例如:使用“a=b +c ; e =a +d;”而不用“e=(a =b +c ) +d ”。

6.13定义常量规则

对于代码中引用的常量(尤其是数字),应该申明一個const 常量,在代码中引用名字而不直接引用值。

6.14模块化规则

某一功能,如果重复实现一遍以上,即应考虑模块化,将它写成通用方法。并向小组成员发布。同时要尽可能利用其它人的现成模块。

6.15交流规则

共享别人的工作成果,向别人提供自己的工作成果。在具体任务开发中,如果有其它的编码规则,则在相应的软件开发计划中予以明确定义。

6.16当一个页面完成时,建议点击(或按Ctrl+E,D)重新

编排文档。(备注:这适用于大部分文档类型,如html 页面、cs页面、样式表等)

6.17建议当一个类页面完成时,应点击右键,选择“组织using”,点击“移除未使用的using”。

6.18编写代码时如要将数据类型转换,建议使用系统自定义的数据转换类进行相关转换,以免发生异常。7. 编程准则

7.1

变量使用

a) 一个变量只能有一个用途;变量的用途必须和变量的名称保持一致。b) 变量定义就近原则。7.2数据库操作

a) 查找数据库表或视图时,建议只取出确实需要的那些字段,尽量避免使用*。b) 使用无关联子查询,而不要使用关联子查询。c) 清楚明白地使用列名,而不能使用列的序号。d) 用事务保证数据的完整性。

e) 在Sql 语句中使用除法时,为避免遇到以零作除数错误,建议除数写法为NULLIF(除数,0)。7.3

对象使用

a) 尽可能晚地创建对象,并且尽可能早地释放它。7.4. 模块设计原则。

a) 不允许随意定义公用的方法和类。

b) 方法功能单一,不允许一个方法实现两个及两个以上的功能。

c) 尽量不要在方法内部使用全局变量,如要使用全局变量,应转化为参数带入。d) 方法与方法之间只允许存在包含关系,而不允许存在交叉关系。即两者之间只存在单方向的调用与被调用,不存在双向的调用与被调用。

e) 模块与模块之间尽量为松耦合。

7.5结构化要求

a) 禁止出现两条等价的支路。

例如:

void func()

{

if (a==2)

{}

//

else if (a==3) {}

//

else if (a==2) {}

//

else {}

}

//

b) 避免使用goto 语句

c) 用CASE 实现多路分支

d) 不使用条件赋值语句。

e) 避免不必要的分支。

7.6方法返回值原则

1)方法返回值

使用bool 类型:该方法只需要获得成功或者失败的返回信息时候

使用int 类型:错误代码用负数表示,成功返回0

7.7. 使用region 提高代码的可读性。

比如:

#region描述区域所实现的功能

//代码区域

#endregion

8. 代码包规范

本项目中,每个任务在完成一个稳定的版本后,都应打包并且归档。

8.1代码包的版本号

项目中,代码包的版本号由圆点隔开的两个数字组成,第一个数字表示发行号,

第二个数字表示该版的修改号。具体用法如下:

1) 当代码包初版时,版本号为V1.00;

2) 当代码包被局部修改或bug 修正时,发行号不变,修改号第二个数字增1。例如,对初版代码包作了第一次修订,则版本号为V1.01;

3) 当代码包在原有的基础上增加部分功能,发行号不变,修改号第一个数字增1,例如,对V1.12版的基础上增加部分功能,则新版本号为V1.20;

4) 当代码包有重要修改或局部修订累积较多导致代码包发生全局变化时,发行号增1。例如,在V1.15版的基础上作了一次全面修改,则新版本号为V2.00。

8.2代码包的标识

本项目所产生的代码包都有唯一、特定的编码,其构成如下:

S-项目标识-代码包类型-版本号/序号

其中:

1) S:本项目的标识,表明本项目是“XXXX”。

2) 项目标识:简要标识本项目,此标识适用于整个项目的文档。

3) 代码包类型:取自以下表的两位字母编码。

4) 版本号:本代码包的版本号。

5) 序号:四位数字编码,指明该代码包在项目代码库的总序号。

例如:

一个Windows 下RAR 源码的压缩代码包命名为:S-XXXX-WS-V1.02/0001

项目的代码包分类表类型

源码文件

RAR 包

(Windo

ws)

件编译文件安装文件源码代码+安装文编码WS WB WI WA 注源代码文件包编译文件包安装文件包源代码和安装文件包释

项目中所有代码包的标识清单将在《项目开发计划》中予以具体定义。

9. 源代码的管理

9.1. 代码库/目录的建立

项目负责人在VSS 中建立项目的文档库目录,即为“OldVersion”目录,以便快速查询。

9.2. 代码归档

所有代码在完成一个稳定的版本后,项目负责人都应打包后,存放于VSS 中该项目的“OldVersion”目录下,并且依据代码包的命名规范为代码包分配一个唯一名称。并在VSS 中将项目打上版本标签,以便以后获取。

9.3. 每天下班前要尽量把文件签入。

9.4. 签出项目文件或解决方案时尽快签入,以免其他人员无法签出。

9.5. 建议每天上班后立即获取最新版本,重新生成一次。

9.6. 禁止将未编译通过的代码签入。

9.7. 建议签入文件时填写注释,简要说明本次修改的内容。

10. 输入控制校验规则

10.1数据录入控制

a) TextBox 输入

1、要保持用户输入和数据库接收的长度一致

2、必须用系统自定义的过滤方法进行非法字符过滤,特殊格式要进行输入合法性校验。如:E_mail格式...

电话格式020-12345678

(020)12345678

邮政编码是六位

11. 数据库开发规则

11.1. 数据表表名使用Pascal 规则,尽量不使用下划线,字段名称也使用Pascal 规则。11.2. 必须建立数据库字典,字典中每张数据表都必须取一个相应中文名称,名称必须是唯一的,表中字段要取相应的中文名称,要有相应的中文注释来说明用途和规则。

11.3. 在Sql 语句中使用除法时,为避免遇到以零作除数错误,建议除数写法为NULLIF(除数,0)。

11.4. 在编写视图时要用列名,禁止使用*。(如:要用Select ID,OrderId From Order, 而不能用Select *From Order)。

11.5. 查找数据库表或视图时,建议只取出确实需要的那些字段,尽量避免使用*。11.6. 使用无关联子查询,而不要使用关联子查询。

11.7. 用事务保证数据的完整性。

附录1:服务器控件名缩写表

a、web控件web 控件名

AdRotator

Button

Calendar

CheckBox

CheckBoxList

CompareValidator

CustomValidator

DataGrid

DataList

DropDownList

HyperLink

Image 缩写art btn cal cb cbl cpv ctv dg dl ddl hl img

ImageButton

Label

LinkButton

ListBox

Panel

PlaceHolder

RadioButton

RadioButtonList

RangeValidator

RegularExpressionValidator Repeater

RequiredFieldValidator Table

TableCell

TableRow

TextBox

ValidationSummary XML

b、html控件html 控件名

HtmlAnchor

HtmlButton

HtmlForm

HtmlGenericControl HtmlImage

HtmlInputButton(按钮)HtmlInputButton(重置)HtmlInputButton(提交)HtmlInputCheckBox HtmlInputFile

HtmlInputHidden

HtmlInputImage

HtmlInputRadioButton HtmlInputText(密码)HtmlInputText(文本)HtmlSelect

HtmlTable

HtmlTableCell

HtmlTableRow

HtmlTextArea ibtn lbl lbtn lb pl ph rb rbl rv rev rpt rfv tbl tcl tr txt vs xml 缩写hah hbtn hfrm hgc himg htxt hrbtn hsbtn hicb hfile hhdn hiimg hrb hpwd htxt hslt htab htcl htr htxta

1. 目的...................................................................................................................................................... 22. 范围...................................................................................................................................................... 23. 注释规范.............................................................................................................................................. 24. 命名总体规则...................................................................................................................................... 35. 命名规范.............................................................................................................................................. 46. 编码规则.............................................................................................................................................. 87. 编程准则............................................................................................................................................ 108. 代码包规范........................................................................................................................................ 119. 源代码的管理.................................................................................................................................... 1210. 输入控制校验规则.......................................................................................................................... 1311. 数据库开发规则.............................................................................................................................. 13

1. 目的

为了统一公司软件开发的设计过程中关于代码编写时的编写规范和具体开发工作时的编程规范,保证代码的一致性,便于交流和维护,特制定此规范。2. 范围

本规范适用于开发组全体人员,作用于软件项目开发的代码编写阶段和后期维护阶段。3. 注释规范

3.1.

概述

a) 注释要求中文及中文的标点符号。b) 注释中,应标明对象的完整的名称及其用途,但应避免对代码过于详细的描述。c) 每行注释的最大长度为100个字符。d) 将注释与注释分隔符用一个空格分开。e) 不允许给注释加外框。f) 编码的同时书写注释。g) 重要变量必须有注释。

h) 变量注释和变量在同一行,所有注释必须对齐,与变量分开至少两个空格。如:

string title; //标题

i) j) k) l) m) 典型算法必须有注释。

在循环和逻辑分支地方的上行必须就近书写注释。程序段或语句的注释在程序段或语句的上一行

在代码交付之前,必须删掉临时的或无关的注释。

为便于阅读代码,每行代码的长度应少于100个字符。

3.3. 模块(类)注释

模块开始必须以以下形式书写模块注释:

///


///说明:///作者:作者中文名

///创建时间:///

///修改记录://///////{

2012-01-01修改人名称修改功能描述2012-01-02修改人名称修改功能描述2012-01-03修改人名称修改功能描述

public class Order

}

3.4. 类属性注释

在类的属性必须以以下格式编写属性注释:

///

///属性说明///

public DateTime AddTime;

3.5. 方法注释

在类的方法声明前必须以以下格式编写注释

///

///方法说明///

///参数说明

///对方法返回值的说明,该说明必须明确说明返回的值代表什么含义///修改记录://///////{}

2012-01-01修改人名称修改描述2012-01-02修改人名称修改描述2012-01-03修改人名称修改描述

public int Add (OrderInfomodel)

3.6. 代码间注释

代码间注释分为单行注释和多行注释:

单行注释://多行注释:/*

多行注释1多行注释2多行注释3*/或者//多行注释1//多行注释2//多行注释3

代码中遇到语句块时必须添加注释(if,for,foreach,……),添加的注释必须能够说明此语句块的作用和实现手段(所用算法等等)。

具体可参考XML 文档注释(C#编程指南)

4. 命名总体规则

名字应该能够标识事物的特性,是有意义的,描述性的词语。能够一眼看出它作什么。别使用会引起误解的名字。如果名字一目了然,就无需用文档来解释方法的功能了。名字尽量使用英文单词。

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

名字可以有两个或三个单词组成,但不应多于三个,控制在3至30个字母以内。

在名字中,多个单词用大写第一个字母(其它字母小写)来分隔。例如:IsSuperUser。名字尽量使用前缀而不是后缀。

名字中的单词尽量使用名词,如有动词,也尽量放在后面。例如:FunctionUserDelete(而不是FunctionDeleteUser)。

在具体任务开发中,如果有特定的命名约定,则在相应的软件开发计划中予以明确定义及上报。5. 命名规范

具体可参考微软命名规范

5.1. 命名规范样式的分类

名称Pascal 规则Camel 规则Upper 规则标识符

解释

首字母和后面的每个单词的首字母都大写;其他字母小写首字母小写,而后面的每个单词的首字母大写;其他字母小写所有字母都大写,中间用下划线分隔

命名格式

例子

public int GetTypeID(string

标识符、参数、局部变量

Camel 规则

typeName) {int typeID; …}

Private 、Protected 的实例字段界面控件

Camel 规则Camel 规则

private string redValue; protected bool isOk; private Label lblAlarm; namespace System.IO {…}public

Pascal 规则

System.Drawing.Color BackColor {…}

缩写必须是被普遍接受、众所周知的缩写例子HelloWorld helloWorld

PI 备注

缩写Upper 规则

除上面的标识符外(包括但不限于:类名、方法名、命名空间)

5.2. 命名原则

a) 有意义的,描述性的词语来命名。能够一眼看出它作什么。别使用会引起误解的名字。如果名字一目了然,就无需用文档来解释方法的功能了。

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

c) 名字尽量使用英文单词,特殊情况下才使用拼音。

d). 除用于循环,别使用单个字母的变量象i, n, x 等.而要使用index, temp 等。for (int i =0; i

类名应该为名词及名词短语,尽可能使用完整的词.使用Pascal 规则。

不要使用类前缀-。不要使用下划线字符(_)。不要使用任何类前缀(比如C)。有时候需要提供以字母I 开始的类名称,虽然该类不是接口。只要I 是作为类名称组成部分的整个单词的第一个字母,这便是适当的。例如,类名称IdentityStore 就是适当的。

在适当的地方,使用复合单词命名派生的类。派生类名称的第二个部分应当是基类的名称。

例如,ApplicationException 对于从名为Exception 的类派生的类是适当的名称,原因是ApplicationException 是一种Exception。请在应用该规则时进行合理的判断。例如,Button 对于从Control 派生的类是适当的名称。尽管按钮是一种控件,但是将Control 作为类名称的一部分将使名称不必要地加长。

public class FileStream {}

f) 接口命名规则

接口名称应该为名词及名词短语或者描述其行为的形容词,尽可能使用完整的词.(Example:IComponent or IEnumberable) 使用Pascal 规则。

使用字符I 为前缀,并紧跟一个大写字母(即接口名的第一个字母大写)public interface IComponent {}g) 枚举命名规则

对于Enum 类型和值名称使用Pascal 规则。少用缩写。

不要在Enum 类型名称上使用Enum 后缀。

public enum FileMode {

Create, CreateNew, Open,

OpenOrCreate, Truncate }

h) 静态常量使用名词及名词短语命名规则使用Upper 规则(全部大写,中间用下划线分隔)int PI =3.1415926

i) 参数及非常量变量命名举例

使用描述性的命名,名称应该明确表达参数的意义及类型,优先满足参数的意义描述使用Camel 规则

不要对字段名或静态字段名应用前缀。具体说来,不要对字段名称应用前缀来区分静态和非静态字段。例如,应用g_或s_前缀是不正确的。

j) Web UI 类的变量命名可以通过特定的规则加入前缀Type GetType (stringtypeName) 使用Pascal 规则

k) 对方法名采用一致的动词/宾语或宾语/动词顺序。

例如,将动词置于前面时,所使用的名称诸如InsertWidget 和InsertSprocket;将宾语置于前面时,所使用的名称诸如WidgetInsert 和SprocketInsert。

推荐名称应该为动词或动词短语.例如Save ,SaveCustomer ,而不要使用CustomerSave 。

不要在方法中重复类的名称。例如,如果某个类已命名为Book,则不要将某个方法称为Book.CloseBook,而可以将方法命名为Book.Close。

l) 属性命名规则

名称应该为名词及名词短语使用Pascal 规则

对于bool 型属性或者变量使用Is(is)作为前缀,不要使用Flag 后缀,例如应该使用IsDeleted,而不要使用DeleteFlag

public enum Color {...}m) 集合命名规则

名称应该为名词及名词短语使用Pascal 规则

名称后面追加“Collection”

n) 事件命名规则

event handlers 命名使用EventHandler 后缀.两个参数分别使用sender 及e 使用Pascal 规则

事件参数使用EventArgs 后缀

事件命名使用语法时态反映其激发的状态,例如Changed,Changing.考虑使用动词命名.

public delegate void MouseEventHandler (object sender, MouseEvent e); public class MouseEventArgs :EventArgs {

int x; int y;

public MouseEventArgs(int x, int y) {

this .x =x; this .y =y; }

public int X {

get {return x; }}

public int Y {

get {return y; }}}

6. 编码规则

6.1. 错误检查规则

a) 编程中要考虑方法的各种执行情况,尽可能处理所有流程情况。b) 检查所有的系统调用的错误信息,除非要忽略错误。

c) 将方法分两类:一类为与屏幕的显示无关,另一类与屏幕的显示有关。对于与屏幕显示无关的方法,方法通过返回值来报告错误。对于与屏幕显示有关的方法,方法要负责向用户发出警告,并进行错误处理。

d) 错误处理代码一般放在方法末尾。

e) 对于通用的错误处理,可建立通用的错误处理方法,处理常见的通用的错误。

6.2. 大括号规则

将大括号放置在关键词下方的同列处,例如:if (条件表达式)while (条件表达式){{

...

}}6.3. 缩进规则

使用一个两个空格为每层次缩进。例如:

void func(){

if (false ) {

if (true ) {

while (false )

...

{}}}}

6.4小括号规则

a) 不要把小括号和关键词(if、while等)紧贴在一起,要用空格隔开它们。b) 不要把小括号和方法名紧贴在一起。

c) 除非必要,不要在Return 返回语句中使用小括号。因为关键字不是方法,如果小括号紧贴着方法名和关键字,二者很容易被看成是一体的。

6.5if else 规则

如果你有用到else if 语句的话,通常最好有一个else 块以用于处理未处理到的其他情况。可以的话放一个记录信息注释在else 处,即使在else 没有任何的动作。其格式为:

if (条件1) //注释

{}

else if (条件2) //注释{}else //注释{}

注:if和循环的嵌套最多允许4层6.6比较规则

总是将恒量放在等号/不等号的左边。一个原因是假如你在等式中漏了一个等号,语法检查器会为你报错。第二个原因是你能立刻找到数值而不是在你的表达式的末端找到它。例如:

if (6==errorNum ) ...

6.7Case 规则

default case 总应该存在,如果不允许到达,则应该保证:若到达了就会触发一个错误。Case的选择条件最好使用int 或string 类型。

6.8对齐规则

变量的申明和初始化都应对齐。例如:

int m_iCount;int i,j; float m_fIncome,m_fPay;m_iCount=0; i =1; m_fIncome=0.3; 6.9单语句规则

除非这些语句有很密切的联系,否则每行只写一个语句。6.10单一功能规则

原则上,一个程序单元(方法)只完成一项功能。6.11简单功能规则

原则上,一个程序单元的代码应该限制在一页内(25~30行)。6.12独立赋值规则

嵌入式赋值不利于理解程序,同时可能回造成意想不到的副作用,应尽量编写独立的赋值语句。例如:使用“a=b +c ; e =a +d;”而不用“e=(a =b +c ) +d ”。

6.13定义常量规则

对于代码中引用的常量(尤其是数字),应该申明一個const 常量,在代码中引用名字而不直接引用值。

6.14模块化规则

某一功能,如果重复实现一遍以上,即应考虑模块化,将它写成通用方法。并向小组成员发布。同时要尽可能利用其它人的现成模块。

6.15交流规则

共享别人的工作成果,向别人提供自己的工作成果。在具体任务开发中,如果有其它的编码规则,则在相应的软件开发计划中予以明确定义。

6.16当一个页面完成时,建议点击(或按Ctrl+E,D)重新

编排文档。(备注:这适用于大部分文档类型,如html 页面、cs页面、样式表等)

6.17建议当一个类页面完成时,应点击右键,选择“组织using”,点击“移除未使用的using”。

6.18编写代码时如要将数据类型转换,建议使用系统自定义的数据转换类进行相关转换,以免发生异常。7. 编程准则

7.1

变量使用

a) 一个变量只能有一个用途;变量的用途必须和变量的名称保持一致。b) 变量定义就近原则。7.2数据库操作

a) 查找数据库表或视图时,建议只取出确实需要的那些字段,尽量避免使用*。b) 使用无关联子查询,而不要使用关联子查询。c) 清楚明白地使用列名,而不能使用列的序号。d) 用事务保证数据的完整性。

e) 在Sql 语句中使用除法时,为避免遇到以零作除数错误,建议除数写法为NULLIF(除数,0)。7.3

对象使用

a) 尽可能晚地创建对象,并且尽可能早地释放它。7.4. 模块设计原则。

a) 不允许随意定义公用的方法和类。

b) 方法功能单一,不允许一个方法实现两个及两个以上的功能。

c) 尽量不要在方法内部使用全局变量,如要使用全局变量,应转化为参数带入。d) 方法与方法之间只允许存在包含关系,而不允许存在交叉关系。即两者之间只存在单方向的调用与被调用,不存在双向的调用与被调用。

e) 模块与模块之间尽量为松耦合。

7.5结构化要求

a) 禁止出现两条等价的支路。

例如:

void func()

{

if (a==2)

{}

//

else if (a==3) {}

//

else if (a==2) {}

//

else {}

}

//

b) 避免使用goto 语句

c) 用CASE 实现多路分支

d) 不使用条件赋值语句。

e) 避免不必要的分支。

7.6方法返回值原则

1)方法返回值

使用bool 类型:该方法只需要获得成功或者失败的返回信息时候

使用int 类型:错误代码用负数表示,成功返回0

7.7. 使用region 提高代码的可读性。

比如:

#region描述区域所实现的功能

//代码区域

#endregion

8. 代码包规范

本项目中,每个任务在完成一个稳定的版本后,都应打包并且归档。

8.1代码包的版本号

项目中,代码包的版本号由圆点隔开的两个数字组成,第一个数字表示发行号,

第二个数字表示该版的修改号。具体用法如下:

1) 当代码包初版时,版本号为V1.00;

2) 当代码包被局部修改或bug 修正时,发行号不变,修改号第二个数字增1。例如,对初版代码包作了第一次修订,则版本号为V1.01;

3) 当代码包在原有的基础上增加部分功能,发行号不变,修改号第一个数字增1,例如,对V1.12版的基础上增加部分功能,则新版本号为V1.20;

4) 当代码包有重要修改或局部修订累积较多导致代码包发生全局变化时,发行号增1。例如,在V1.15版的基础上作了一次全面修改,则新版本号为V2.00。

8.2代码包的标识

本项目所产生的代码包都有唯一、特定的编码,其构成如下:

S-项目标识-代码包类型-版本号/序号

其中:

1) S:本项目的标识,表明本项目是“XXXX”。

2) 项目标识:简要标识本项目,此标识适用于整个项目的文档。

3) 代码包类型:取自以下表的两位字母编码。

4) 版本号:本代码包的版本号。

5) 序号:四位数字编码,指明该代码包在项目代码库的总序号。

例如:

一个Windows 下RAR 源码的压缩代码包命名为:S-XXXX-WS-V1.02/0001

项目的代码包分类表类型

源码文件

RAR 包

(Windo

ws)

件编译文件安装文件源码代码+安装文编码WS WB WI WA 注源代码文件包编译文件包安装文件包源代码和安装文件包释

项目中所有代码包的标识清单将在《项目开发计划》中予以具体定义。

9. 源代码的管理

9.1. 代码库/目录的建立

项目负责人在VSS 中建立项目的文档库目录,即为“OldVersion”目录,以便快速查询。

9.2. 代码归档

所有代码在完成一个稳定的版本后,项目负责人都应打包后,存放于VSS 中该项目的“OldVersion”目录下,并且依据代码包的命名规范为代码包分配一个唯一名称。并在VSS 中将项目打上版本标签,以便以后获取。

9.3. 每天下班前要尽量把文件签入。

9.4. 签出项目文件或解决方案时尽快签入,以免其他人员无法签出。

9.5. 建议每天上班后立即获取最新版本,重新生成一次。

9.6. 禁止将未编译通过的代码签入。

9.7. 建议签入文件时填写注释,简要说明本次修改的内容。

10. 输入控制校验规则

10.1数据录入控制

a) TextBox 输入

1、要保持用户输入和数据库接收的长度一致

2、必须用系统自定义的过滤方法进行非法字符过滤,特殊格式要进行输入合法性校验。如:E_mail格式...

电话格式020-12345678

(020)12345678

邮政编码是六位

11. 数据库开发规则

11.1. 数据表表名使用Pascal 规则,尽量不使用下划线,字段名称也使用Pascal 规则。11.2. 必须建立数据库字典,字典中每张数据表都必须取一个相应中文名称,名称必须是唯一的,表中字段要取相应的中文名称,要有相应的中文注释来说明用途和规则。

11.3. 在Sql 语句中使用除法时,为避免遇到以零作除数错误,建议除数写法为NULLIF(除数,0)。

11.4. 在编写视图时要用列名,禁止使用*。(如:要用Select ID,OrderId From Order, 而不能用Select *From Order)。

11.5. 查找数据库表或视图时,建议只取出确实需要的那些字段,尽量避免使用*。11.6. 使用无关联子查询,而不要使用关联子查询。

11.7. 用事务保证数据的完整性。

附录1:服务器控件名缩写表

a、web控件web 控件名

AdRotator

Button

Calendar

CheckBox

CheckBoxList

CompareValidator

CustomValidator

DataGrid

DataList

DropDownList

HyperLink

Image 缩写art btn cal cb cbl cpv ctv dg dl ddl hl img

ImageButton

Label

LinkButton

ListBox

Panel

PlaceHolder

RadioButton

RadioButtonList

RangeValidator

RegularExpressionValidator Repeater

RequiredFieldValidator Table

TableCell

TableRow

TextBox

ValidationSummary XML

b、html控件html 控件名

HtmlAnchor

HtmlButton

HtmlForm

HtmlGenericControl HtmlImage

HtmlInputButton(按钮)HtmlInputButton(重置)HtmlInputButton(提交)HtmlInputCheckBox HtmlInputFile

HtmlInputHidden

HtmlInputImage

HtmlInputRadioButton HtmlInputText(密码)HtmlInputText(文本)HtmlSelect

HtmlTable

HtmlTableCell

HtmlTableRow

HtmlTextArea ibtn lbl lbtn lb pl ph rb rbl rv rev rpt rfv tbl tcl tr txt vs xml 缩写hah hbtn hfrm hgc himg htxt hrbtn hsbtn hicb hfile hhdn hiimg hrb hpwd htxt hslt htab htcl htr htxta


相关内容

  • 传阅单会客单
  • 江苏省软件企业/产品评估规范 Evaluation of software enterprise/product in Jiangsu Province 2015 - 11- 26发布 2015- 11 - 26实施 目 次 目次 .................................. ...

  • 国际软件工程职业道德规范
  • 软件工程职业道德规范和实践要求 5.2版 IEEE-IEEE-CS 和ACM软件工程道德和职业实践联合工作组推荐 经 IEEE- IEEE-CS 和 ACM 批准定为讲授和实践软件工程的标准 简明版 序言 本规范的简明版以更高级的摘要形式归纳了规范的主要意向,完整版所包括的条款则给出了范例和细节,说 ...

  • 程序代码版本管理规范
  • Working Instruction 软件版本管理规范 Working Instruction Revision List Working Instruction 目录 一.目的 ........................................................... ...

  • 页页岩气资源/储量计算与评价技术规范解读
  • <页岩气资源/储量计算与评价技术规范>解读 2014-06-12 | 作者: 张大伟 李玉喜 | 来源: 中国矿业报 2014年4月17日,国土资源部以公告形式,批准发布了由全国国土资源标准化技术委员会审查通过的<页岩气资源/储量计算与评价技术规范 (DZ/T0254-2014)& ...

  • 项目开发规范报告
  • 项目开发报告 一. 报告的目的 通过反映此次项目开发中各层面存在的问题,以及对项目开发中造成的影响,来反映项目开发中规范化的必要性,以及开发文档的重要性.规范化软件开发流程控制是为了使整个软件产品在开发各个阶段清晰.要求明确.任务具体,便于规范化.系统化及工程化,利于提高软件生命周期的控制及管理,提 ...

  • 公司工作内务管理制度
  • 我刘建伟是北京海淀一家证券营业部的一名客户经理,可为软件销售提供客户资源,同时软件销售也可以把自由的客户提供给我,希望能达到一个双赢,我的业务主要就是新开股东账户,或者找股民让他从其他证券公司转到我所在的证券公司,我为他们提供一系列的服务,说实话对股民没什么影响,我们公司的制度是很健全的,很多公司只 ...

  • 2014年石油行业工具书目
  • 2014年石油行业工具书目 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 <最新石化地质勘探技 ...

  • 软件系统测试规范
  • 上海兴汉科技公司 软件测试规范 目 录 一. 概述 ............................................................................................................................ ...

  • [软件企业评估规范 TSCSIA1-2015]
  • 四川省软件行业协会标准规范 T/SCSIA1-2015 软件企业评估规范 Specification for evaluation of software enterprise 2015-12-10发布 2016-01-01实施 四川省软件行业协会 目 次 前言 .................. ...

  • 如何构造软件企业的配置管理方案
  • 作者:unknown 更新时间:2005-04-14 朗讯科技(中国) 贝尔实验室 刘江华 1 引言 1.1 什么是配置管理 配置管理(Configuration Management)是通过技术或行政手段对软件产品及其开发过程和生命周期进行控制.规范的一系列措施.配置管理的目标是记录软件产品的演化 ...