项目编码规范.doc

上传人:b****2 文档编号:344404 上传时间:2022-10-09 格式:DOC 页数:19 大小:53KB
下载 相关 举报
项目编码规范.doc_第1页
第1页 / 共19页
项目编码规范.doc_第2页
第2页 / 共19页
项目编码规范.doc_第3页
第3页 / 共19页
项目编码规范.doc_第4页
第4页 / 共19页
项目编码规范.doc_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

项目编码规范.doc

《项目编码规范.doc》由会员分享,可在线阅读,更多相关《项目编码规范.doc(19页珍藏版)》请在冰豆网上搜索。

项目编码规范.doc

项目编码规范应用研发中心

项目代码编程规范

1.应用范围

本规范应用于采用J2EE规范的项目中,所有项目中的JAVA代码(含JSP,SERVLET,JAVABEAN,EJB)JS代码、HTML代码及数据库设计均应遵守这个规范。

同时,也可作为其它项目的参考。

2.设计类和方法

2.1.创建具有很强内聚力的类

方法的重要性往往比类的重要性更容易理解,方法是指执行一个独立逻辑的一段代码。

类常被错误的视为是一个仅仅用于存放方法的容器。

有些开发人员甚至把这种思路作了进一步的发挥,将他们的所有方法放入单个类之中。

之所以不能正确的认识类的功能,原因之一是类的实现实际上并不影响程序的执行。

当一个工程被编译时,如果所有方法都放在单个类中或者放在几十个类中,这没有任何关系。

虽然类的数量对代码的执行并无太大的影响,但是当创建便于调试和维护的代码时,类的数量有时会带来很大的影响。

类应该用来将相关的方法组织在一起。

当类包含一组紧密关联的方法时,该类可以说具有强大的内聚力。

当类包含许多互不相关的方法时,该类便具有较弱的内聚力。

应该努力创建内聚力比较强的类。

大多数工程都包含许多并不十分适合与其他方法组合在一起的方法。

在这种情况下,可以为这些不合群的方法创建一个综合性收容类。

创建类时,应知道“模块化”这个术语的含义是什么。

类的基本目的是创建相当独立的程序单元。

2.2.创建松散连接和高度专用的方法

2.2.1.使所有方法都执行专门的任务

每个方法都应执行一项特定的任务,它应出色的完成这项任务。

应避免创建执行许多不同任务的方法。

创建专用方法有许多好处。

首先调试将变得更加容易。

2.2.2.尽量使方法成为自成一体的独立方法

当一个方法依赖于其他方法的调用时,称为与其他方法紧密连接的方法。

紧密连接的方法会使调试和修改变得比较困难,因为它牵涉到更多的因素。

松散连接的方法优于紧密连接的方法,但你不可能使每个方法都成为独立的方法。

若要使方法具备较强的独立性,方法之一是尽量减少类变量。

创建方法时,设法将每个方法视为一个黑箱,其他例程不应要求了解该方法的内部工作情况,该方法也不应要求了解它外面的工程情况。

这就是为什么你的方法应依靠参数而不应依靠全局变量的原因。

创建专用方法时,请考虑下列指导原则:

1)将复杂进程放入专用方法。

如果应用程序使用复杂的数学公式,请考虑将每个公式放入它自己的方法中。

这样使用这些公式的其他方法就不包含用于该公式的实际代码。

这样也可以更容易发现与公式相关的问题。

2)将数据输入/输出(I/O)放入专用方法。

3)将专用方法中可能要修改的代码隔离。

如果你知道某个进程经常变更,请将这个多变的代码放入专用方法,以便以后可以更容易的进行修改,并减少无意中给其他进程带来问题的可能性。

4)将业务规则封装在专用方法中。

业务规则常属于要修改的代码类别,应与应用程序的其余部分隔开。

其他方法不应知道业务规则,只有要调用的方法才使用这些规则。

2.3.设计类和方法时,要达到下列目的:

1)创建更加容易调试和维护的方法

2)创建具有强大内聚力的类

3)创建高度专用的方法

4)创建松散连接的方法

5)尽量使方法具有独立性

6)提高方法的扇入性

7)降低方法的扇出性

2.4.编程原则

2.4.1.为方法和类赋予表义性强的名字

为了使代码更加容易理解,最容易的方法之一是为你的方法赋予表义性强的名字。

函数名DoIt、GetIt的可读性很难与CalculateSalesTax、RetrieveUserID相比。

由缩写方法名组成的代码很难理解和维护,没有理由再这样做了。

给方法正确的命名,可使程序工程的调试和维护工作大大的改观。

请认真对待方法命名的工作,不要为了减少键入操作量而降低方法的可理解度。

实际应用举例:

1)给方法命名时应大小写字母混合使用。

如果句子全使用大写字母,那么阅读起来就非常困难,而大小写字母混合使用的句子,阅读起来就很容易。

2)定义方法名时不要使用缩写。

如果你认为应用程序中的某些工程应使用缩写,那么请将这些情况加上注释,并确保每个人在所有时间内都使用这些缩写。

决不要在某些方法中对某些单词进行缩写,而在别的方法中却不使用缩写。

3)定义方法名要统一使用英文单词或者计算机专业英语,要做到见名知意。

2.4.2.创建方法时,始终都应显式地定义它的作用域。

1)如果你真的想创建一个公用方法,请向代码阅读者说明这一点。

2)通过为每个方法赋予一个明确定义的作用域,可以减少代码阅读者需要投入的工作量。

应确保你为方法赋予最有意义的作用域。

如果一个方法只被同一类中的另一个方法调用,那么请将它创建成私有方法。

如果该方法是从多个类中的多个方法中调用,请将该说明为公用方法。

2.4.3.用参数在方法之间传递数据

应尽量避免使用类变量。

一般来说,变量的作用域越小越好。

为了减少类变量,方法之一是将数据作为参数在不同方法之间传递,而不是让方法共享类变量。

1)为每个参数指定数据类型。

2)始终要对数进行检验,决不要假设你得数据没有问题。

程序员常犯的一个错误是在编写方法时假设数据没有问题。

在初始编程阶段,当编写调用方法时,这样的假设并无大碍。

这时你完全能够知道什么是参数的许可值,并按要求提供这些值。

但如果你不对参数的数据进行检验,那么下列情况就会给你带来很大麻烦:

另外某个人创建了一个调用方法,但此人不知道允许的值;你在晚些时候添加了新的调用方法,并错误的传递了坏数据。

2.4.4.其他编程建议

1.注意释放资源,如文件关闭,数据库操作后关闭ResultSet,Statement,Connection等,其他涉及IO操作的如:

各种Reader,Writer,InputStream,OutputStream等等。

2.使用StringBuffer对象

在处理String的时候要尽量使用StringBuffer类,StringBuffer类是构成String类的基础。

String类将StringBuffer类封装了起来,(以花费更多时间为代价)为开发人员提供了一个安全的接口。

当我们在构造字符串的时候,我们应该用StringBuffer来实现大部分的工作,当工作完成后将StringBuffer对象再转换为需要的String对象。

比如:

如果有一个字符串必须不断地在其后添加许多字符来完成构造,那么我们应该使用StringBuffer对象和它的append()方法。

如果我们用String对象代替StringBuffer对象的话,会花费许多不必要的创建和释放对象的CPU时间。

3.避免太多的使用synchronized关键字

避免不必要的使用关键字synchronized,应该在必要的时候再使用它,这是一个避免死锁的好方法。

必须使用时,也尽量控制范围,最好在块级控制。

4.避免使用java.util.Vector等那些在jdk1.3前就有的集合类

因为"Unlikethenewcollectionimplementations,Vectorissynchronized.",所以使用java.util.Vector类在性能上会有所减低。

5.尽量使用接口而不是一个具体的类

比方如下需求,给定一个SQL语句,返回一个对象的列表,实现中用java.util.ArrayList实现,于是定义方法为:

publicjava.util.ArrayListgetObjectItems(Stringsql)

上面的方法存在一个问题,当getObjectItems内改用Vector或LinkedList实现,外部类必须做相应更改。

一个更好的方法是定义返回值为java.util.AbstractList更合适:

publicjava.util.AbstractListgetObjectItems(Stringsql)

这样即使更改实现,外部类也不必做相应更改。

6.避免使用索引来调用数据库中间层组件返回的结果集

如:

for(inti=1;i<=dt.getRowCount();i++)

{Stringfield1=dt.getField(i,0).toString();……}

而应用字段名来存取结果集:

for(inti=1;i<=dt.getRowCount();i++)

{Stringfield1=dt.getField(i,"field1").toString();……}

这样在数据库设计更改或查询的SQL语句发生变化时,不会影响到程序的执行。

3.命名约定

所有变量的定义应该遵循匈牙利命名法,由表意性强的一个单词或多个单词组成的名字,而且每个单词的首写字母大写,其它字母小写,这样保证了对变量名能够进行正确的断句。

3.1.工程的命名

3.1.1.工程的命名

直接使用projectname.

3.1.2.工程目录的分配(参照各类开发工具的设置)

1.设计文档(design):

design

2.源代码(source):

src.

3.引用的库文件(library):

lib

4.生成的代码(class):

classes

5.生成的文档(document):

docs

3.2.包

3.2.1.约定

l根级目录以com.**开头!

l各项目名称为下一级包!

本级目录为项目的控制类所在(即:

实现主要流程的类和涉及项目系统管理的类)。

l再下级的主要并列目录名:

1)Cloudframework云存储开发框架包

2)Cngi具体的应用系统名

l全部小写

l使用英语单词,不要使用汉语拼音

l标识符用点号分隔开来

3.2.2.举例

3.3.类,接口

3.3.1.约定

l类的名字应该使用名词

l使用英语单词,不要使用汉语拼音

l每个单词首字母应该大写

l避免使用单词的缩写,除非它的缩写已经广为人知,如HTTP

l实现类一般采用接口类名+Impl来展现

3.3.2.举例

ClassHello;

ClassHelloWorld;

InterfaceApple;

ClassAppleImplimplementsApple;

3.4.方法

3.4.1.约定

l第一个单词一般是动词。

l使用英语单词,不要使用汉语拼音

l第一个单词是小写,但是中间单词的首字母是大写。

l如果方法返回一个成员变量的值,方法名一般为get+成员变量名,如若返回的值是bool变量,一般以is作为前缀。

l如果方法修改一个成员变量的值,方法名一般为:

set+成员变量名。

3.4.2.举例

getName();

setName();

isFirst();

3.5.变量

3.5.1.约定

l单词的首字母大写;但是首个单词字母都必须小写

l使用英语单词,不要使用汉语拼音

l不要用_或&作为第一个字母。

l尽量使用短而且具有意义的单词。

l单字符的变量名一般只用于生命期非常短暂的变量。

i,j,k,m,n一般用于int/integers;c,d,e一般用于characters。

l如果变量是集合,则变量名应用复数。

lboolean/Boolean类型的使用is前缀

l命名组件采用匈牙利命名法。

3.5.2.举例

StringfileName;

int[]students;

inti;

intn;

booleanisPass;

3.6.常量

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

当前位置:首页 > 工程科技 > 电子电路

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1