Java开发规范使用手册.docx

上传人:b****5 文档编号:3294511 上传时间:2022-11-21 格式:DOCX 页数:44 大小:41.39KB
下载 相关 举报
Java开发规范使用手册.docx_第1页
第1页 / 共44页
Java开发规范使用手册.docx_第2页
第2页 / 共44页
Java开发规范使用手册.docx_第3页
第3页 / 共44页
Java开发规范使用手册.docx_第4页
第4页 / 共44页
Java开发规范使用手册.docx_第5页
第5页 / 共44页
点击查看更多>>
下载资源
资源描述

Java开发规范使用手册.docx

《Java开发规范使用手册.docx》由会员分享,可在线阅读,更多相关《Java开发规范使用手册.docx(44页珍藏版)》请在冰豆网上搜索。

Java开发规范使用手册.docx

Java开发规范使用手册

Java开发规范使用手册

目录

第1章绪论4

1.1编制依据4

1.2目的和意义4

1.3范围4

1.4版权声明4

1.5参考资料4

1.6概述5

第2章代码组织与风格5

2.1基本原则5

2.2缩进5

2.3长度6

2.4行宽6

2.5间隔6

2.6对齐6

2.7括号7

第3章注释7

3.1基本原则7

3.2JavaDoc8

3.3文件与包注释8

3.4类、接口注释8

3.5方法注释9

3.6其他注释10

3.7注释参考表10

第4章命名11

4.1基本原则11

4.2文件、包11

4.3类、接口12

4.4字段12

常量12

变量和参数12

组件/部件12

集合12

神秘的数12

其他13

4.5方法13

异常13

4.6命名约定表13

第5章声明15

5.1基本原则15

5.2包15

5.3类、接口16

5.4方法16

5.5字段16

5.6示例17

第6章类与接口18

6.1基本原则18

6.2抽象类与接口18

6.3继承与组合18

6.4构造函数和静态工厂方法19

6.5toString(),equals(),hashCode()...19

6.6SingletonClass20

第7章方法21

7.1基本原则21

7.2参数和返回值21

第8章表达式与语句22

8.1基本原则22

8.2控制语句22

8.3循环语句23

第9章错误与异常24

9.1基本原则24

9.2已检查异常与运行时异常24

9.3异常的捕捉与处理24

第10章测试与Bug跟踪25

10.1基本原则25

10.2测试驱动开发25

10.3Junit单元测试25

10.4自动测试与持续集成25

10.5Bug跟踪和缺陷处理26

第11章性能与安全26

11.1基本原则26

11.2String与StringBugffer26

11.3集合26

11.4对象27

11.5同步27

11.6final27

11.7垃圾收集和资源释放27

第12章其他28

12.1目录结构28

12.2CVS注释与标记29

第13章附录29

13.1CVS标识符29

13.2注释模板29

13.3常用缩写简表30

13.4版权声明模板30

13.5示例代码32

第1章绪论

1.1编制依据

Java开发规程

1.2目的和意义

本规范的目的是使本组织能以标准的、规范的方式设计和编码。

通过建立编码规范,以使每个开发人员养成良好的编码风格和习惯;并以此形成开发小组编码约定,提高程序的可靠性、可读性、可修改性、可维护性和一致性等,增进团队间的交流,并保证软件产品的质量。

通过制定本规范,可以统一应用系统各软件的设计和开发,为下一步应用系统集成做好准备。

各应用软件开发商通过遵循本规范,可以简化应用软件的开发,更好与其它软件协作,完成相关业务功能。

1.3范围

本规范适用于“catvFramework”及其下所有软件项目、产品等的设计、开发以及维护、升级等。

本规范使用于“catvFramework”的所有软件开发人员,在整个软件开发过程中必须遵循此规范。

1.4版权声明

本文档为玩家网的内部开发规范,不得转载。

未经catv授权,任何个人、组织或单位不得将本文档用于书面发表、转载、摘录等,亦不得用于其他商业行为。

1.5参考资料

《Java编程指南》见RUP(RationalUnifiedProcess)中文版。

《Java技术手册》(JavainaNutshell)

《SunJava语言编码规范》(JavaCodeConventions)

《EffictiveJava》

《JavaPitfalls》

《JavaRules》

《Java互联网流行开发规范》

1.6概述

对于代码,首要要求是它必须正确,能够按照设计预定功能去运行;第二是要求代码必须清晰易懂,使自己和其他的程序员能够很容易地理解代码所执行的功能等。

然而,在实际开发中,每个程序员所写的代码却经常自成一套,很少统一,导致理解困难,影响团队的开发效率及系统的质量等。

因此,一份完整并被严格执行的开发规范是非常必须的,特别是对软件公司的开发团队而言。

此规范参考自业界标准编程规范并结合多位编程高人多年编程经验、习惯等而制定。

最根本的原则:

代码虽然是给机器运行的,但却是给人读的!

运用常识。

当找不到任何规则或指导方针,当规则明显不能适用,当所有的方法都失效的时侯:

运用常识并核实这些基本原则。

这条规则比其它所有规则都重要。

常识是必不可少。

当出现该情况时,应当及时收集并提交,以便对本规范进行修改。

第2章代码组织与风格

2.1基本原则

代码的组织和风格的基本原则是:

便于自己的开发,易于与他人的交流。

因个人习惯和编辑器等可以设置和形成自己的风格,但必须前后一致,并符合本规范的基本要求和原则。

本章所涉及到的内容一般都可在Java集成编辑环境中进行相应设置,也可由Ant等调用checkstyle等来进行自动规整。

2.2缩进

子功能块当在其父功能块后缩进。

当功能块过多而导致缩进过深时当将子功能块提取出来做为子函数。

代码中以TAB(4个字符)缩进,在编辑器中请将TAB设置为以空格替代,否则在不同编辑器或设置下会导致TAB长度不等而影响整个程序代码的格式。

例如:

Table1.缩进示例

publicvoidmethodName(){

if(somecondition){

for(…){

//somesentences

}//endfor

}//endif

}

2.3长度

为便于阅读和理解,单个函数的有效代码长度当尽量控制在100行以内(不包括注释行),当一个功能模块过大时往往造成阅读困难,因此当使用子函数等将相应功能抽取出来,这也有利于提高代码的重用度。

单个类也不宜过大,当出现此类情况时当将相应功能的代码重构到其他类中,通过组合等方式来调用,建议单个类的长度包括注释行不超过1500行。

尽量避免使用大类和长方法。

2.4行宽

页宽应该设置为80字符。

一般不要超过这个宽度,这会导致在某些机器中无法以一屏来完整显示,但这一设置也可以灵活调整。

在任何情况下,超长的语句应该在一个逗号后或一个操作符前折行。

一条语句折行后,应该比原来的语句再缩进一个TAB或4个空格,以便于阅读。

2.5间隔

类、方法及功能块间等应以空行相隔,以增加可读性,但不得有无规则的大片空行。

操作符两端应当各空一个字符以增加可读性。

相应独立的功能模块之间可使用注释行间隔,并标明相应内容,具体参看附录的代码示例

2.6对齐

关系密切的行应对齐,对齐包括类型、修饰、名称、参数等各部分对齐。

连续赋值时当对齐操作符。

当方法参数过多时当在每个参数后(逗号后)换行并对齐。

当控制或循环中的条件比较长时当换行(操作符前)、对齐并注释各条件。

变量定义最好通过添加空格形成对齐,同一类型的变量应放在一起。

如下例所示:

Table2.对齐示例

//变量对齐-----------------------------------------------

intcount=100;

intlength=0;

StringstrUserName=null;

Integer[]porductCode=newInteger

(2);//产品编码数组

//参数对齐----------------------------------------------

publicConnectiongetConnection(Stringurl,

StringuserName,

Stringpassword)

throwsSQLException,IOException{

}

//换行对齐----------------------------------------------

publicfinalstaticStringSQL_SELECT_PRODUCT=“SELECT*“

+“FROMTProductWHEREProd_ID=”

+“prodID”;

//条件对齐----------------------------------------------

if(Condition1//当条件一

&&Condition2//并且条件二

||Condition3){//或者条件三

//Code************************

}

for(inti=0;

i

i++){

//Code************************

}

2.7括号

{}中的语句应该单独作为一行,左括号"{"当紧跟其语句后,右括号"}"永远单独作为一行且与其匹配行对齐,并尽量在其后说明其匹配的功能模块。

较长的方法以及类、接口等的右括号后应使用//end...等标识其结束。

如:

类的结束符:

}//EOCClassName,

方法结束符:

}//endmethodName(),

功能块结束:

}//endif...userNameisnull?

循环快结束:

}//endfor...everyuserinuserList

不要在程序中出现不必要的括号,但有时为了增加可读性和便于理解,当用括号限定相应项。

左括号是否换行等随个人习惯而定,若换行则当与其前导语句首字符对齐。

第3章注释

3.1基本原则

1)注释应该增加代码的清晰度。

代码注释的目的是要使代码更易于被其他开发人员等理解。

2)如果你的程序不值得注释,那么它很可能也不值得运行。

3)避免使用装饰性内容。

4)保持注释的简洁。

5)注释信息不仅要包括代码的功能,还应给出原因。

6)不要为注释而注释。

7)除变量定义等较短语句的注释可用行尾注释外,其他注释当避免使用行尾注释。

3.2JavaDoc

对类、方法、变量等的注释需要符合JavaDoc规范,对每个类、方法都应详细说明其功能、条件、参数等,并使用良好的HTML标记格式化注释,以使生成的JavaDoc易阅读和理解。

类注释中当包含版本和作者信息,使用CVS标记自动跟踪版本变化和修改记录,具体内容参见《CVS使用手册》及下面几节的相应内容等,CVS标识符请参加附录中的《CVS标识符》。

3.3文件与包注释

在每个文件、包的头部都应该包含该文件的功能、作用、作者、版权以及创建、修改记录等。

并在其中使用CVS标记自动跟踪版本变化及修改记录等信息。

注意是/**/注释而不是/***/JavaDoc注释。

文件注释模板见附件《注释模板》中的文件注释部分。

版权声明部分请参见附件《版权声明》并注意更新到最新版本。

Table3文件注释示例:

/*============================================================

*$Id:

User.java,v1.12002/09/0714:

36:

23l_zhyExp$

*Created:

[2003-3-2320:

18:

53]byl_zhy

*============================================================

*

*ProjectName

*

*Description

*

*============================================================

*

*CopyrightInformation.

*

*===========================================================*/

每个包当有包注释,在源码及JavaDoc相应包路径下建立package.html以描述包的功能、作用等。

3.4类、接口注释

在类、接口定义之前当对其进行注释,包括类、接口的目的、作用、功能、继承于何种父类,实现的接口、实现的算法、使用方法、示例程序等,在作者和版本域中使用CVS标记自动跟踪版本变化等,具体参看附件《注释模板》中相关部分。

Table4类注释示例

/**

*

字符串实用类。

*

*定义字符串操作时所需要用到的方法,如转换中文、HTML标记处理等。

*

*@author$Author:

l_zhy$

*@version$Revision:

1.2$$Date:

2003/05/1502:

10:

27$

*/

publicclassStringUtil{

}

3.5方法注释

依据标准JavaDoc规范对方法进行注释,以明确该方法功能、作用、各参数含义以及返回值等。

复杂的算法用/**/在方法内注解出。

参数注释时当注明其取值范围等

返回值当注释出失败、错误、异常时的返回情况。

异常当注释出什么情况、什么时候、什么条件下会引发什么样的异常

Table5方法注释示例

/**

*执行查询。

*

*该方法调用Statement的executeQuery(sql)方法并返回ResultSet

*结果集。

*

*@paramsql标准的SQL语句

*@returnResultSet结果集,若查询失败则返回null

*@throwsSQLException当查询数据库时可能引发此异常

*/

publicResultSetexecuteQuery(Stringsql)throwsSQLException{

//Statement和SQL语句都不能为空

if(null!

=stmt&&!

StringUtil.isEmpty(sql)){

//返回查询执行结果

returnstmt.executeQuery(sql);

}

returnnull;

}//endexecuteQuery()

3.6其他注释

应对重要的变量加以注释,以说明其含义等。

应对不易理解的分支条件表达式加注释。

不易理解的循环,应说明出口条件。

过长的方法实现,应将其语句按实现的功能分段加以概括性说明。

对于异常处理当注明正常情况及异常情况或者条件,并说明当异常发生时程序当如何处理。

3.7注释参考表

Table6注释参考表

序号

项目

注释内容

1

参数

参数类型

参数用来做什么

约束或前提条件

示例

2

字段/属性

字段描述

注释所有使用的常量

示例

并行事件

可见性决策

3

类的目的

已知的问题

类的开发/维护历史、版本

注释出采用的常量

并行策略

4

编译单元

(文件)

每一个类/类内定义的接口,含简单的说明

文件名和/或标识信息

修改/维护记录

版权信息

5

获取成员函数

若可能,说明为什么使用滞后初始化

6

接口

目的明确它应如何被使用以及如何不被使用

7

局部变量

用处/目的

8

成员函数注释

成员函数做什么以及它为什么做这个

哪些参数必须传递给一个成员函数

成员函数返回什么

已知的问题

任何由某个成员函数抛出的异常

可见性决策

成员函数是如何改变对象的

包含任何修改代码的历史

如何在适当情况下调用成员函数的例子

适用的前提条件和后置条件

9

成员函数内部注释

控制结构

代码做了些什么以及为什么这样做

局部变量

难或复杂的代码

处理顺序

10

包的功能和用途

第4章命名

4.1基本原则

规范的命名能使程序更易阅读,从而更易于理解。

它们也可以提供一些标识功能方面的信息,有助于更好的理解代码和应用。

1)使用可以准确说明变量/字段/类/接口/包等的完整的英文描述符。

例如,采用类似firstName,listAllUsers或CorporateCustomer这样的名字,严禁使用汉语拼音及不相关单词命名,虽然Java支持Unicode命名,但本规范规定对包、类、接口、方法、变量、字段等不得使用汉字等进行命名。

2)采用该领域的术语。

如果用户称他们的“客户”(clients)为“顾客”(customers),那么就采用术语Customer来命名这个类,而不用Client。

3)采用大小写混合,提高名字的可读性。

一般应该采用小写字母,但是类和接口的名字的首字母,以及任何中间单词的首字母应该大写。

包名全部小写。

4)尽量少用缩写,但如果一定要使用,当使用公共缩写和习惯缩写等,如实现(implement)可缩写成impl,经理(manager)可缩写成mgr等,具体参看附录之《常用缩写简表》,严禁滥用缩写。

5)避免使用长名字(最好不超过25个字母)。

6)避免使用相似或者仅在大小写上有区别的名字。

7)避免使用数字,但可用2代替to,用4代替for等,如:

go2Jsp。

4.2文件、包

1)文件名当与其类严格相同,所有单词首字母大写。

2)包名一般以项目或模块名命名,少用缩写和长名,一律小写。

3)基本包:

com.catv,所有包、文件都从属于此包。

4)包名按如下规则组成:

[基本包].[项目名].[模块名].[子模块名]...

如:

com.catv.search

com.catv.j2ee.dao.hibernate

5)不得将类直接定义在基本包下,所有项目中的类、接口等都当定义在各自的项目和模块包中。

4.3类、接口

所有单词首字母大写。

使用能确切反应该类、接口含义、功能等的词。

一般采用名词。

接口可带I前缀或able、ible、er等后缀。

4.4字段

常量

采用完整的英文大写单词,在词与词之间用下划线连接,如:

DEFAULT_VALUE

变量和参数

对不易清楚识别出该变量类型的变量应使用类型缩写作其前缀,如字符串使用strXXX,boolean使用isXXX,hasXXX等等。

除第一各个单词外其余单词首字母大写。

对私有实例变量可使用_前缀,但在其存取方法中则应该将其前缀去掉。

组件/部件

应采用完整的英文描述符命名组件(接口部件),遵循匈牙利命名法则

如:

btnOK,lblName。

集合

一个集合,例如数组和矢量,应采用复数命名来表示队列中存放的对象类型。

命名应采用完整的英文描述符,名字中所有非开头的单词的第一个字母应大写,适当使用集合缩写前缀。

如:

VectorvProducts=newVector();//产品向量

ArrayaryUsers=newArray();//用户列表

神秘的数

我们在程序里经常会用到一些量,它是有特定的含义的。

例如,现在我们写一个薪金统计程序,公司员工有50人,我们在程序里就会用50这个数去进行各种各样的运算。

在这里,50就是"神秘的数"。

当别的程序员在程序里看到50这个数,将很难知道它的含义,造成理解上的困难。

在程序里出现"神秘的数"会降低程序的可读性、可维护性和可扩展性,故规定不得出现此类"神秘的数"。

避免的方法是把神秘的数定义为一个常量。

注意这个常量的命名应该能表达该数的意义,并且应该全部大写,以与对应于变量的标识符区别开来。

例如上面50这个数,我们可以定义为一个名为NUM_OF_EMPLOYEES的常量来代替。

这样,别的程序员在读程序的时候就可以容易理解了。

其他

命名时应使用复数来表示它们代表多值。

如:

orderItems。

4.5方法

方法的命名应采用完整的英文描述符,大小写混合使用:

所有中间单词的第一个字母大写。

方法名称的第一个单词常常采用一个有强烈动作色彩的动词。

取值类使用get前缀,设值类使用set前缀,判断类使用is(has)前缀。

例:

getName()

setSarry()

isLogon()

方法参数建议顺序:

(被操作者,操作内容,操作标志,其他⋯)

publicvoidreplace(StringsourceStr,//源字串

StringoldStr,//被替换字串

StringnewStr){//替换为字串

//Code*****************************

}

异常

异常类名由表示该异常类型的单词和Exception组成,如ActionException。

异常实例一般使用e、ex等,在多个异常时使用该异常名或简写加E,Ex等组成,如:

SQLEx

ActionEx

4.6命名约定表

Table7命名约定表

序号

操作项

命名约定

示例

1

参数

使用传递值/对象的完整的英文描述符。

userID

2

字段/属性

字段采用完整的英文描述,第一个字母小写,任何中间单词的首字母大写。

firstName

3

布尔型的获取成员函数

所有的布尔型获取函数必须用单词is(has)做前缀。

isString()

hasMoney()

4

采用完整的英文描述符,所有单词的第一个字母大写。

Customer

5

编译单元文件

使用类或接口的名字,或者如果文件中除了主类之外还有多个类时,加上前缀java来说明它是一个源码文件。

Customer.java

6

部件/组件

使用完整的英文描述来说明组件的用途,将组件类型使用匈牙利命名法则作其前缀。

btnOK,cboTypeList

7

构造函数

使用类名

Customer()

8

析构函数

Java没有析构函数,但一个对象在垃圾收集时,调用成员函数finalize()。

finalize()

9

异常类名

由表示该异常类型等的单词和Exception组成

SQLException

ActionException

10

异常实例名

通常采用字母e、ex表示异常。

多个异常时使用异常名或其简写加E、Ex等构成

e

SQLEx

11

静态常量字段(常量)

全部采用大写字母,单词之间用下划线分隔。

采用静态常量获取成员函数。

DEFAULT_NAME

12

获取成员函数

被访问字段名的前面加上前缀get。

getUserName()

13

接口

采用完整的英文描述符说明接口封装,所有单词的第一个字母大写。

使用I前缀,其后使用able,.ible或者er等后缀,但这不是必需的。

IRunnable

IPrompter

14

局部变量

采用完整的英文描述符,第一个字母小写,但不要隐藏已有字段。

例如,如果有一个字段叫firstName,不要让一个局部变量叫firstName。

strName,totalMoney

15

循环计数器

通常采用字母i,j,k或者counte

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

当前位置:首页 > 小学教育 > 英语

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

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