软件开发规范.doc

上传人:大张伟 文档编号:8844656 上传时间:2021-01-19 格式:DOC 页数:15 大小:142KB
返回 下载 相关 举报
软件开发规范.doc_第1页
第1页 / 共15页
软件开发规范.doc_第2页
第2页 / 共15页
软件开发规范.doc_第3页
第3页 / 共15页
软件开发规范.doc_第4页
第4页 / 共15页
软件开发规范.doc_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《软件开发规范.doc》由会员分享,可在线阅读,更多相关《软件开发规范.doc(15页珍藏版)》请在三一文库上搜索。

1、 软件开发软件开发规范规范(C#)(C#) 文档名称文档名称软件开发规范初稿 描述描述 编写人员编写人员 审核人审核人 版本日期版本日期 文档变更历史 时间时间修改人修改人章节章节描述描述 目 录 1. 目的目的.1 2. 范围范围.2 3. 注释规范注释规范.2 4. 命名总体规则命名总体规则.3 5. 命名规范命名规范.4 6. 编码规则编码规则.8 7. 编程准则编程准则 .10 8. 代码包规范代码包规范.11 9. 源代码的管理源代码的管理.12 10. 输入控制校验规则输入控制校验规则 .12 11. 数据库开发规则数据库开发规则.12 1.1. 目的目的 为了统一公司软件开发的设

2、计过程中关于代码编写时的编写规范和具体开发工作时的 编程规范,保证代码的一致性,便于交流和维护,特制定此规范。 2.2. 范围范围 本规范适用于开发组全体人员,作用于软件项目开发的代码编写阶段和后期维护阶段。 3.3. 注释规范注释规范 3.1. 概述 a) 注释要求中文及中文的标点符号。 b) 注释中,应标明对象的完整的名称及其用途,但应避免对代码过于详细的描述。 c) 每行注释的最大长度为 100 个字符。 d) 将注释与注释分隔符用一个空格分开。 e) 不允许给注释加外框。 f) 编码的同时书写注释。 g) 重要变量必须有注释。 h) 变量注释和变量在同一行,所有注释必须对齐,与变量分开

3、至少两个空格。 如: string title; / 标题 i) 典型算法必须有注释。 j) 在循环和逻辑分支地方的上行必须就近书写注释。 k) 程序段或语句的注释在程序段或语句的上一行 l) 在代码交付之前,必须删掉临时的或无关的注释。 m) 为便于阅读代码,每行代码的长度应少于 100 个字符。 3.3. 模块(类)注释 模块开始必须以以下形式书写模块注释: / /说明: /作者:作者中文名 /创建时间: / / 修改记录: / 2012-01-01 修改人名称 修改功能描述 / 2012-01-02 修改人名称 修改功能描述 / 2012-01-03 修改人名称 修改功能描述 publi

4、c class Order 3.4. 类属性注释 在类的属性必须以以下格式编写属性注释: / / 属性说明 / public DateTime AddTime; 3.5. 方法注释 在类的方法声明前必须以以下格式编写注释 / / 方法说明 / / 参数说明 / 对方法返回值的说明,该说明必须明确说明返回的值代表什么含义 / 修改记录: / 2012-01-01 修改人名称 修改描述 / 2012-01-02 修改人名称 修改描述 / 2012-01-03 修改人名称 修改描述 public int Add (OrderInfo model) 3.6. 代码间注释 代码间注释分为单行注释和多行注

5、释: 单行注释: / 多行注释: /* 多行注释1 多行注释2 多行注释3 */ 或者 /多行注释1 / 多行注释2 / 多行注释3 代码中遇到语句块时必须添加注释(if,for,foreach,),添加的注释必须能够说 明此语句块的作用和实现手段(所用算法等等) 。 具体可参考 XML 文档注释(C# 编程指南) 4.4. 命名命名总体规则总体规则 名字应该能够标识事物的特性,是有意义的,描述性的词语。能够一眼看出它作什么。 别使用会引起误解的名字。如果名字一目了然,就无需用文档来解释方法的功能了。 名字尽量使用英文单词。 名字尽量不使用缩写,除非它是众所周知的。 名字可以有两个或三个单词组

6、成,但不应多于三个,控制在 3 至 30 个字母以内。 在名字中,多个单词用大写第一个字母(其它字母小写)来分隔。例如: IsSuperUser。 名字尽量使用前缀而不是后缀。 名字中的单词尽量使用名词,如有动词,也尽量放在后面。例如: FunctionUserDelete(而不是 FunctionDeleteUser) 。 在具体任务开发中,如果有特定的命名约定,则在相应的软件开发计划中予以明确定义及 上报。 5.5. 命名规范命名规范 具体可参考微软命名规范 5.1. 命名规范样式的分类 名称 解释 例子 Pascal 规则 首字母和后面的每个单词的首字母都大写;其他字母小写 HelloW

7、orld Camel 规则 首字母小写,而后面的每个单词的首字母大写;其他字母小写 helloWorld Upper 规则 所有字母都大写,中间用下划线分隔 PI 标识符 命名格式 例子备注 标识符、参数、局部变量 Camel 规则 public int GetTypeID(string typeName) int typeID; Private、Protected 的实例 字段 Camel 规则 private string redValue; protected bool isOk; 界面控件 Camel 规则 private Label lblAlarm; 缩写 Upper 规则 nam

8、espace System.IO 缩写必须是被普 遍接受、众所周知 的缩写 除上面的标识符外(包括但不 限于:类名、方法名、命名空 间) Pascal 规则 public System.Drawing.Color BackColor 5.2. 命名原则 a) 有意义的,描述性的词语来命名。能够一眼看出它作什么。别使用会引起误解的名 字。如果名字一目了然,就无需用文档来解释方法的功能了。 b) 名字尽量不使用缩写,除非它是众所周知的。 c) 名字尽量使用英文单词,特殊情况下才使用拼音。 d). 除用于循环,别使用单个字母的变量象 i, n, x 等. 而要使用 index, temp 等。 fo

9、r ( int i = 0; i count; i ) . e) 类命名规则 类名应该为名词及名词短语,尽可能使用完整的词. 使用 Pascal 规则。 不要使用类前缀 - 。不要使用下划线字符 (_)。不要使用任何类前缀(比如 C) 。 有时候需要提供以字母 I 开始的类名称,虽然该类不是接口。只要 I 是作为类名称 组成部分的整个单词的第一个字母,这便是适当的。例如,类名称 IdentityStore 就是适 当的。 在适当的地方,使用复合单词命名派生的类。派生类名称的第二个部分应当是基类的 名称。 例如,ApplicationException 对于从名为 Exception 的类派生的

10、类是适当的名称, 原因是 ApplicationException 是一种 Exception。请在应用该规则时进行合理的判断。 例如,Button 对于从 Control 派生的类是适当的名称。尽管按钮是一种控件,但是 将 Control 作为类名称的一部分将使名称不必要地加长。 public class FileStream f) 接口命名规则 接口名称应该为名词及名词短语或者描述其行为的形容词,尽可能使用完整的词. (Example: IComponent or IEnumberable) 使用 Pascal 规则。 使用字符 I 为前缀,并紧跟一个大写字母(即接口名的第一个字母大写)

11、public interface IComponent g) 枚举命名规则 对于 Enum 类型和值名称使用 Pascal 规则。 少用缩写。 不要在 Enum 类型名称上使用 Enum 后缀。 public enum FileMode Create, CreateNew, Open, OpenOrCreate, Truncate h) 静态常量使用名词及名词短语命名规则 使用 Upper 规则(全部大写,中间用下划线分隔) int PI = 3.1415926 i) 参数及非常量变量命名举例 使用描述性的命名,名称应该明确表达参数的意义及类型,优先满足参数的意义描述 使用 Camel 规则

12、不要对字段名或静态字段名应用前缀。具体说来,不要对字段名称应用前缀来区分静 态和非静态字段。例如,应用 g_ 或 s_ 前缀是不正确的。 j) Web UI 类的变量命名可以通过特定的规则加入前缀 Type GetType (string typeName) 使用 Pascal 规则 k) 对方法名采用一致的动词/宾语或宾语/动词顺序。 例如,将动词置于前面时,所使用的名称诸如 InsertWidget 和 InsertSprocket;将 宾语置于前面时,所使用的名称诸如 WidgetInsert 和 SprocketInsert。 推荐名称应该为动词或动词短语.例如 Save,SaveCu

13、stomer,而不要使用 CustomerSave 。 不要在方法中重复类的名称。例如,如果某个类已命名为 Book,则不要将某个方法称 为 Book.CloseBook,而可以将方法命名为 Book.Close。 l) 属性命名规则 名称应该为名词及名词短语 使用 Pascal 规则 对于 bool 型属性或者变量使用 Is(is)作为前缀,不要使用 Flag 后缀,例如应该使 用 IsDeleted,而不要使用 DeleteFlag public enum Color . m) 集合命名规则 名称应该为名词及名词短语 使用 Pascal 规则 名称后面追加“Collection” n) 事

14、件命名规则 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, in

15、t y) this.x = x; this.y = y; public int X get return x; public int Y get return y; 6.6. 编码编码规则规则 6.1. 错误检查规则 a) 编程中要考虑方法的各种执行情况,尽可能处理所有流程情况。 b) 检查所有的系统调用的错误信息,除非要忽略错误。 c) 将方法分两类:一类为与屏幕的显示无关, 另一类与屏幕的显示有关。对于与屏 幕显示无关的方法,方法通过返回值来报告错误。对于与屏幕显示有关的方法,方法要负 责向用户发出警告,并进行错误处理。 d) 错误处理代码一般放在方法末尾。 e) 对于通用的错误处理,可建

16、立通用的错误处理方法,处理常见的通用的错误。 6.2. 大括号规则 将大括号放置在关键词下方的同列处,例如: if (条件表达式) while (条件表达式) . . 6.3. 缩进规则 使用一个两个空格为每层次缩进。例如: void func() if (false) if (true) while (false) 6.4 小括号规则 a) 不要把小括号和关键词(if 、while 等)紧贴在一起,要用空格隔开它们。 b) 不要把小括号和方法名紧贴在一起。 c) 除非必要,不要在 Return 返回语句中使用小括号。因为关键字不是方法,如果小 括号紧贴着方法名和关键字,二者很容易被看成是一体

17、的。 6.5 if else 规则 如果你有用到 else if 语句的话,通常最好有一个 else 块以用于处理未处理到的其 他情况。可以的话放一个记录信息注释在 else 处,即使在 else 没有任何的动作。其格式 为: if (条件 1) / 注释 else if (条件 2) / 注释 else / 注释 注:if 和循环的嵌套最多允许 4 层 6.6 比较规则 总是将恒量放在等号/不等号的左边。一个原因是假如你在等式中漏了一个等号,语法 检查器会为你报错。第二个原因是你能立刻找到数值而不是在你的表达式的末端找到它。 例如: if ( 6 = errorNum ) . 6.7 Cas

18、e 规则 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 简单功能规则 原则上,一个程序单元的代码应该限制在一页内

19、(2530 行) 。 6.12 独立赋值规则 嵌入式赋值不利于理解程序,同时可能回造成意想不到的副作用,应尽量编写独立的 赋值语句。例如:使用“a = b + c ; e = a + d;”而不用“e = ( a = b + c ) + d ” 。 6.13 定义常量规则 对于代码中引用的常量(尤其是数字) ,应该申明一個const 常量,在代码中引用名字 而不直接引用值。 6.14 模块化规则 某一功能,如果重复实现一遍以上,即应考虑模块化,将它写成通用方法。并向小组 成员发布。同时要尽可能利用其它人的现成模块。 6.15 交流规则 共享别人的工作成果,向别人提供自己的工作成果。 在具体任务

20、开发中,如果有其它的编码规则,则在相应的软件开发计划中予以明确定 义。 6.16 当一个页面完成时,建议点击 (或按 Ctrl+E,D)重 新编排文档。 (备注:这适用于大部分文档类型,如 html 页面、cs 页面、样式表等) 6.17 建议当一个类页面完成时,应点击右键,选择“组织 using”,点击“移除未使 用的 using” 。 6.18 编写代码时如要将数据类型转换,建议使用系统自定义的数据转换类进行相关转 换,以免发生异常。 7.7. 编程准则编程准则 7.1 变量使用 a) 一个变量只能有一个用途;变量的用途必须和变量的名称保持一致。 b) 变量定义就近原则。 7.2 数据库操

21、作 a) 查找数据库表或视图时,建议只取出确实需要的那些字段,尽量避免使用*。 b) 使用无关联子查询,而不要使用关联子查询。 c) 清楚明白地使用列名,而不能使用列的序号。 d) 用事务保证数据的完整性。 e) 在 Sql 语句中使用除法时,为避免遇到以零作除数错误,建议除数写法为 NULLIF(除数,0)。 7.3 对象使用 a) 尽可能晚地创建对象,并且尽可能早地释放它。 7.4. 模块设计原则。 a) 不允许随意定义公用的方法和类。 b) 方法功能单一,不允许一个方法实现两个及两个以上的功能。 c) 尽量不要在方法内部使用全局变量,如要使用全局变量,应转化为参数带入。 d) 方法与方法

22、之间只允许存在包含关系,而不允许存在交叉关系。即两者之间只 存在单方向的调用与被调用,不存在双向的调用与被调用。 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 类型:错误代

23、码用负数表示,成功返回 0 7.7. 使用 region 提高代码的可读性。 比如: #region 描述区域所实现的功能 /代码区域 #endregion 8.8. 代码包规范代码包规范 本项目中,每个任务在完成一个稳定的版本后,都应打包并且归档。 8.1 代码包的版本号 项目中,代码包的版本号由圆点隔开的两个数字组成,第一个数字表示发行号, 第二个数字表示该版的修改号。具体用法如下: 1) 当代码包初版时,版本号为 V1.00; 2) 当代码包被局部修改或 bug 修正时,发行号不变,修改号第二个数字增 1。例如, 对初版代码包作了第一次修订,则版本号为 V1.01; 3) 当代码包在原有

24、的基础上增加部分功能,发行号不变,修改号第一个数字增 1,例 如,对 V1.12 版的基础上增加部分功能,则新版本号为 V1.20; 4) 当代码包有重要修改或局部修订累积较多导致代码包发生全局变化时,发行号增 1。例如,在 V1.15 版的基础上作了一次全面修改,则新版本号为 V2.00。 8.2 代码包的标识 本项目所产生的代码包都有唯一、特定的编码,其构成如下: S-项目标识-代码包类型-版本号/序号 其中: 1) S:本项目的标识,表明本项目是“XXXX” 。 2) 项目标识:简要标识本项目,此标识适用于整个项目的文档。 3) 代码包类型:取自以下表的两位字母编码。 4) 版本号:本代

25、码包的版本号。 5) 序号:四位数字编码,指明该代码包在项目代码库的总序号。 例如: 一个 Windows 下 RAR 源码的压缩代码包命名为: S-XXXX-WS-V1.02/0001 项目的代码包分类表 类 型 编 码 注 释 源码文件 WS 源代码文件包 编译文件 WB 编译文件包 安装文件 WI 安装文件包 RAR 包 (Windo ws) 源码代码 + 安装文 件 WA 源代码和安装文件包 项目中所有代码包的标识清单将在项目开发计划中予以具体定义。 9.9. 源代码的源代码的管理管理 9.1. 代码库/目录的建立 项目负责人在 VSS 中建立项目的文档库目录,即为“OldVersio

26、n”目录,以便快速查 询。 9.2. 代码归档 所有代码在完成一个稳定的版本后,项目负责人都应打包后,存放于 VSS 中该项目的 “OldVersion”目录下,并且依据代码包的命名规范为代码包分配一个唯一名称。并在 VSS 中将项目打上版本标签,以便以后获取。 9.3. 每天下班前要尽量把文件签入。 9.4. 签出项目文件或解决方案时尽快签入,以免其他人员无法签出。 9.5. 建议每天上班后立即获取最新版本,重新生成一次。 9.6. 禁止将未编译通过的代码签入。 9.7. 建议签入文件时填写注释,简要说明本次修改的内容。 10.10. 输入控制校验规则输入控制校验规则 10.1 数据录入控制

27、 a) TextBox 输入 1、要保持用户输入和数据库接收的长度一致 2、必须用系统自定义的过滤方法进行非法字符过滤,特殊格式要进行输入合法性校验。 如:E_mail 格式 XXXXXX.XXX. 电话格式 020-12345678 (020)12345678 邮政编码是六位 11.11. 数据库开发规则数据库开发规则 11.1. 数据表表名使用 Pascal 规则,尽量不使用下划线,字段名称也使用 Pascal 规 则。 11.2. 必须建立数据库字典,字典中每张数据表都必须取一个相应中文名称,名称必 须是唯一的,表中字段要取相应的中文名称,要有相应的中文注释来说明用途和规则。 11.3.

28、 在 Sql 语句中使用除法时,为避免遇到以零作除数错误,建议除数写法为 NULLIF(除数,0)。 11.4. 在编写视图时要用列名,禁止使用*。 (如:要用 Select ID,OrderId From Order,而不能用 Select * From Order) 。 11.5. 查找数据库表或视图时,建议只取出确实需要的那些字段,尽量避免使用*。 11.6. 使用无关联子查询,而不要使用关联子查询。 11.7. 用事务保证数据的完整性。 附录 1:服务器控件名缩写表 a、web 控件 web 控件名缩写 AdRotatorart Buttonbtn Calendarcal CheckB

29、oxcb CheckBoxListcbl CompareValidatorcpv CustomValidatorctv DataGriddg DataListdl DropDownListddl HyperLinkhl Imageimg ImageButtonibtn Labellbl LinkButtonlbtn ListBoxlb Panelpl PlaceHolderph RadioButtonrb RadioButtonListrbl RangeValidatorrv RegularExpressionValidatorrev Repeaterrpt RequiredFieldVali

30、datorrfv Tabletbl TableCelltcl TableRowtr TextBoxtxt ValidationSummaryvs XMLxml b、html 控件 html 控件名缩写 HtmlAnchorhah HtmlButtonhbtn HtmlFormhfrm HtmlGenericControlhgc HtmlImagehimg HtmlInputButton(按钮) htxt HtmlInputButton(重置) hrbtn HtmlInputButton(提交) hsbtn HtmlInputCheckBoxhicb HtmlInputFilehfile HtmlInputHiddenhhdn HtmlInputImagehiimg HtmlInputRadioButtonhrb HtmlInputText(密码) hpwd HtmlInputText(文本) htxt HtmlSelecthslt HtmlTablehtab HtmlTableCellhtcl HtmlTableRowhtr HtmlTextAreahtxta

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

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1