当前位置:文档之家› 软件开发规范

软件开发规范

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

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

3. 注释规范.概述a) 注释要求中文及中文的标点符号。

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

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

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

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

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

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

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

如:string title; 模块(类)注释模块开始必须以以下形式书写模块注释:类属性注释在类的属性必须以以下格式编写属性注释:方法注释在类的方法声明前必须以以下格式编写注释代码间注释代码间注释分为单行注释和多行注释:单行注释:命名总体规则➢名字应该能够标识事物的特性,是有意义的,描述性的词语。

能够一眼看出它作什么。

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

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

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

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

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

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

例如:IsSuperUser。

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

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

例如:FunctionUserDelete (而不是FunctionDeleteUser)。

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

5. 命名规范具体可参考微软命名规范. 命名规范样式的分类a) 有意义的,描述性的词语来命名。

能够一眼看出它作什么。

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

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

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

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

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

for ( int i = 0; i < count; i ){ ...}e) 类命名规则类名应该为名词及名词短语,尽可能使用完整的词.使用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 =i) 参数及非常量变量命名举例使用描述性的命名,名称应该明确表达参数的意义及类型,优先满足参数的意义描述使用Camel 规则不要对字段名或静态字段名应用前缀。

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

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

j) Web UI类的变量命名可以通过特定的规则加入前缀Type GetType (string typeName)使用Pascal规则k) 对方法名采用一致的动词/宾语或宾语/动词顺序。

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

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

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

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

l) 属性命名规则名称应该为名词及名词短语使用Pascal规则对于bool型属性或者变量使用Is(is)作为前缀,不要使用Flag后缀,例如应该使用IsDeleted,而不要使用DeleteFlagpublic 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){= x; = y;}public int X{get { return x; }}public int Y{get { return y; }}}6. 编码规则. 错误检查规则a) 编程中要考虑方法的各种执行情况,尽可能处理所有流程情况。

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

c) 将方法分两类:一类为与屏幕的显示无关,另一类与屏幕的显示有关。

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

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

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

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

. 大括号规则将大括号放置在关键词下方的同列处,例如:if (条件表达式)while (条件表达式){ {... ...} }. 缩进规则使用一个两个空格为每层次缩进。

例如:void func(){if (false){if (true){while (false){}}}}小括号规则a) 不要把小括号和关键词(if 、while等)紧贴在一起,要用空格隔开它们。

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

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

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

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

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

其格式为:if (条件1) .Case规则default case总应该存在,如果不允许到达,则应该保证:若到达了就会触发一个错误。

Case的选择条件最好使用int或string类型。

对齐规则变量的申明和初始化都应对齐。

例如:int m_iCount;int i,j;float m_fIncome,m_fPay;m_iCount = 0;i = 1;m_fIncome = ;单语句规则除非这些语句有很密切的联系,否则每行只写一个语句。

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

简单功能规则原则上,一个程序单元的代码应该限制在一页内(25~30行)。

独立赋值规则嵌入式赋值不利于理解程序,同时可能回造成意想不到的副作用,应尽量编写独立的赋值语句。

例如:使用“a = b + c ; e = a + d;”而不用“e = ( a = b + c ) + d ”。

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

模块化规则某一功能,如果重复实现一遍以上,即应考虑模块化,将它写成通用方法。

并向小组成员发布。

同时要尽可能利用其它人的现成模块。

交流规则共享别人的工作成果,向别人提供自己的工作成果。

在具体任务开发中,如果有其它的编码规则,则在相应的软件开发计划中予以明确定义。

当一个页面完成时,建议点击(或按Ctrl+E,D)重新编排文档。

(备注:这适用于大部分文档类型,如html页面、cs页面、样式表等)建议当一个类页面完成时,应点击右键,选择“组织 using”,点击“移除未使用的using”。

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

7. 编程准则变量使用a)一个变量只能有一个用途;变量的用途必须和变量的名称保持一致。

b)变量定义就近原则。

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

b) 使用无关联子查询,而不要使用关联子查询。

c) 清楚明白地使用列名,而不能使用列的序号。

d) 用事务保证数据的完整性。

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

对象使用a) 尽可能晚地创建对象,并且尽可能早地释放它。

. 模块设计原则。

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

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

c) 尽量不要在方法内部使用全局变量,如要使用全局变量,应转化为参数带入。

d) 方法与方法之间只允许存在包含关系,而不允许存在交叉关系。

即两者之间只存在单方向的调用与被调用,不存在双向的调用与被调用。

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

相关主题