软件开发要求规范.docx

上传人:b****1 文档编号:15003027 上传时间:2023-06-29 格式:DOCX 页数:22 大小:24.45KB
下载 相关 举报
软件开发要求规范.docx_第1页
第1页 / 共22页
软件开发要求规范.docx_第2页
第2页 / 共22页
软件开发要求规范.docx_第3页
第3页 / 共22页
软件开发要求规范.docx_第4页
第4页 / 共22页
软件开发要求规范.docx_第5页
第5页 / 共22页
软件开发要求规范.docx_第6页
第6页 / 共22页
软件开发要求规范.docx_第7页
第7页 / 共22页
软件开发要求规范.docx_第8页
第8页 / 共22页
软件开发要求规范.docx_第9页
第9页 / 共22页
软件开发要求规范.docx_第10页
第10页 / 共22页
软件开发要求规范.docx_第11页
第11页 / 共22页
软件开发要求规范.docx_第12页
第12页 / 共22页
软件开发要求规范.docx_第13页
第13页 / 共22页
软件开发要求规范.docx_第14页
第14页 / 共22页
软件开发要求规范.docx_第15页
第15页 / 共22页
软件开发要求规范.docx_第16页
第16页 / 共22页
软件开发要求规范.docx_第17页
第17页 / 共22页
软件开发要求规范.docx_第18页
第18页 / 共22页
软件开发要求规范.docx_第19页
第19页 / 共22页
软件开发要求规范.docx_第20页
第20页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

软件开发要求规范.docx

《软件开发要求规范.docx》由会员分享,可在线阅读,更多相关《软件开发要求规范.docx(22页珍藏版)》请在冰点文库上搜索。

软件开发要求规范.docx

软件开发要求规范

 

软件开发规(C#)

文档名称

软件开发规初稿

描述

编写人员

审核人

版本日期

文档变更历史

时间

修改人

章节

描述

 

  

1.目的1

2.围2

3.注释规2

4.命名总体规则3

5.命名规4

6.编码规则8

7.编程准则10

8.代码包规11

9.源代码的管理12

10.输入控制校验规则12

11.数据库开发规则12

1.目的

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

2.围

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

3.注释规

3.1. 概述

a)注释要求中文及中文的标点符号。

b)注释中,应标明对象的完整的名称及其用途,但应避免对代码过于详细的描述。

c)每行注释的最大长度为100个字符。

d)将注释与注释分隔符用一个空格分开。

e) 不允许给注释加外框。

f) 编码的同时书写注释。

g) 重要变量必须有注释。

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

如:

    stringtitle;//标题

i) 典型算法必须有注释。

j) 在循环和逻辑分支地方的上行必须就近书写注释。

k) 程序段或语句的注释在程序段或语句的上一行

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

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

 

3.3.模块(类)注释

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

///

///说明:

<对此类的描述,可以引用系统设计中的描述>

///作者:

作者中文名

///创建时间:

<格式:

YYYY-MM-DD>

///

///修改记录:

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

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

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

publicclassOrder

{

}

 

 

3.4.类属性注释

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

///

///属性说明

///

publicDateTimeAddTime;

3.5.方法注释

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

///

///方法说明

///

///参数说明

///对方法返回值的说明,该说明必须明确说明返回的值代表什么含义

///修改记录:

///2012-01-01修改人名称修改描述

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

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

publicintAdd(OrderInfomodel)

{

}

3.6.代码间注释

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

单行注释:

//<单行注释>

多行注释:

/*

多行注释1

多行注释2

多行注释3

*/

或者

//多行注释1

//多行注释2

//多行注释3

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

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

msdn.microsoft./zh-cn/library/b2s063f7(v=vs.80).aspx

4.命名总体规则

Ø名字应该能够标识事物的特性,是有意义的,描述性的词语。

能够一眼看出它作什么。

别使用会引起误解的名字。

如果名字一目了然,就无需用文档来解释方法的功能了。

Ø名字尽量使用英文单词。

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

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

Ø在名字中,多个单词用大写第一个字母(其它字母小写)来分隔。

例如:

IsSuperUser。

Ø名字尽量使用前缀而不是后缀。

Ø名字中的单词尽量使用名词,如有动词,也尽量放在后面。

例如:

FunctionUserDelete(而不是FunctionDeleteUser)。

 

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

5.命名规

具体可参考微软命名规

msdn.microsoft./zh-cn/library/xzf533w0(v=vs.71).aspx

5.1.命名规样式的分类

名称

 解释

 例子

 Pascal规则

 首字母和后面的每个单词的首字母都大写;其他字母小写

 HelloWorld

 Camel规则

 首字母小写,而后面的每个单词的首字母大写;其他字母小写

 helloWorld

 Upper规则

 所有字母都大写,中间用下划线分隔

 

PI

 标识符

 命名格式

 例子

备注 

 标识符、参数、局部变量

 Camel规则

 publicintGetTypeID(stringtypeName)

{inttypeID;…}

 

 Private、Protected的实例字段

 Camel规则

 privatestringredValue;

protectedboolisOk;

 

 界面控件

 Camel规则

 privateLabellblAlarm;

 

 缩写

 Upper规则

 namespaceSystem.IO

{…}

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

 除上面的标识符外(包括但不限于:

类名、方法名、命名空间)

 Pascal规则

 publicSystem.Drawing.ColorBackColor

{…}

 

5.2.命名原则

a)有意义的,描述性的词语来命名。

能够一眼看出它作什么。

别使用会引起误解的名字。

如果名字一目了然,就无需用文档来解释方法的功能了。

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

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

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

for(inti=0;i

e)类命名规则

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

使用Pascal规则。

不要使用类前缀-。

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

不要使用任何类前缀(比如C)。

有时候需要提供以字母I开始的类名称,虽然该类不是接口。

只要I是作为类名称组成部分的整个单词的第一个字母,这便是适当的。

例如,类名称IdentityStore就是适当的。

在适当的地方,使用复合单词命名派生的类。

派生类名称的第二个部分应当是基类的名称。

例如,ApplicationException对于从名为Exception的类派生的类是适当的名称,原因是ApplicationException是一种Exception。

请在应用该规则时进行合理的判断。

例如,Button对于从Control派生的类是适当的名称。

尽管按钮是一种控件,但是将Control作为类名称的一部分将使名称不必要地加长。

publicclassFileStream{}

f)接口命名规则

接口名称应该为名词及名词短语或者描述其行为的形容词,尽可能使用完整的词.

(Example:

IComponentorIEnumberable)

使用Pascal规则。

使用字符I为前缀,并紧跟一个大写字母(即接口名的第一个字母大写)

publicinterfaceIComponent{}

g)枚举命名规则

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

少用缩写。

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

 

publicenumFileMode

{

Create,

CreateNew,

Open,

OpenOrCreate,

Truncate

}

h)静态常量使用名词及名词短语命名规则

使用Upper规则(全部大写,中间用下划线分隔)

intPI=3.1415926

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

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

使用Camel规则

不要对字段名或静态字段名应用前缀。

具体说来,不要对字段名称应用前缀来区分静态和非静态字段。

例如,应用g_或s_前缀是不正确的。

j)WebUI类的变量命名可以通过特定的规则加入前缀

TypeGetType(stringtypeName)

使用Pascal规则

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

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

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

不要在方法中重复类的名称。

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

 

l)属性命名规则

名称应该为名词及名词短语

使用Pascal规则

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

publicenumColor{...}

m)集合命名规则

名称应该为名词及名词短语

使用Pascal规则

名称后面追加“Collection”

 

n)事件命名规则

eventhandlers命名使用EventHandler后缀.

两个参数分别使用sender及e

使用Pascal规则

事件参数使用EventArgs后缀

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

考虑使用动词命名.

 

publicdelegatevoidMouseEventHandler(objectsender,MouseEvente);

publicclassMouseEventArgs:

EventArgs

{

intx;

inty;

publicMouseEventArgs(intx,inty)

{

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

}

publicintX

{

get{returnx;}

}

publicintY

{

get{returny;}

}

}

6.编码规则

6.1.错误检查规则

a)编程中要考虑方法的各种执行情况,尽可能处理所有流程情况。

b)检查所有的系统调用的错误信息,除非要忽略错误。

c)将方法分两类:

一类为与屏幕的显示无关,另一类与屏幕的显示有关。

对于与屏幕显示无关的方法,方法通过返回值来报告错误。

对于与屏幕显示有关的方法,方法要负责向用户发出警告,并进行错误处理。

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

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

6.2.大括号规则

将大括号放置在关键词下方的同列处,例如:

if(条件表达式)    while(条件表达式)

{                 {

     ...                  ...

}                 }

6.3.缩进规则

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

例如:

voidfunc()

{

if(false)

{

if(true)

{

while(false)

{

}

}

}

}

6.4小括号规则

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

b)不要把小括号和方法名紧贴在一起。

c)除非必要,不要在Return返回语句中使用小括号。

因为关键字不是方法,如果小括号紧贴着方法名和关键字,二者很容易被看成是一体的。

6.5     ifelse规则

如果你有用到elseif语句的话,通常最好有一个else块以用于处理未处理到的其他情况。

可以的话放一个记录信息注释在else处,即使在else没有任何的动作。

其格式为:

if(条件1)                //注释

  {

  }

  elseif(条件2)           //注释

  {

  }

  else                          //注释

  {

  }

注:

if和循环的嵌套最多允许4层

6.6比较规则

总是将恒量放在等号/不等号的左边。

一个原因是假如你在等式中漏了一个等号,语法检查器会为你报错。

第二个原因是你能立刻找到数值而不是在你的表达式的末端找到它。

例如:

if(6==errorNum)...

6.7Case规则

defaultcase总应该存在,如果不允许到达,则应该保证:

若到达了就会触发一个错误。

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)    禁止出现两条等价的支路。

例如:

voidfunc()

{

if(a==2)

{}

//

elseif(a==3){}

//

elseif(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包

(Windows)

源码文件

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格式  XXXXXX.XXX...

   格式    8

               (020)12345678

   邮政编码是六位

 

11.数据库开发规则

11.1.数据表表名使用Pascal规则,尽量不使用下划线,字段名称也使用Pascal规则。

11.2.必须建立数据库字典,字典中每数据表都必须取一个相应中文名称,名称必须是唯一的,表中字段要取相应的中文名称,要有相应的中文注释来说明用途和规则。

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

11.4.在编写视图时要用列名,禁止使用*。

(如:

要用SelectID,OrderIdFromOrder,而不能用Select*FromOrder)。

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

11.6.使用无关联子查询,而不要使用关联子查询。

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

 

附录1:

服务器控件名缩写表

         a、web控件

web控件名

缩写

AdRotator

art

Button

btn

Calendar

cal

CheckBox

cb

CheckBoxList

cbl

CompareValidator

cpv

CustomValidator

ctv

DataGrid

dg

DataList

dl

DropDownList

ddl

HyperLink

hl

Image

img

ImageButton

ibtn

Label

lbl

LinkButton

lbtn

ListBox

lb

Panel

pl

PlaceHolder

ph

RadioButton

rb

RadioButtonList

rbl

RangeValidator

rv

RegularExpressionValidator

rev

Repeater

rpt

RequiredFieldValidator

rfv

Table

tbl

TableCell

tcl

TableRow

tr

TextBox

txt

ValidationSummary

vs

XML

xml

          b、html控件

html控件名

缩写

HtmlAnchor

hah

HtmlButton

hbtn

HtmlForm

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2