i++)
{
}
3.4括号
Ø{}中的语句应该单独作为一行;左括号“{”和右括号“}”应该单独成行;且匹配的{}与前导首字符对齐;
Ø不要在程序中出现不必要的括号;
Ø若左括号“{”未另起行,则必须在其对应的在括号“}”后作结束说明。
如:
类的结束符:
}//EOCClassName
方法结束符:
}//endmethodName()
功能块结束:
}//endif...userNameisnull
循环快结束:
}//endfor...everyuserinuserList
若开发工具选择Eclipse,可以通过定义统一的样式文件,统一格式化代码。
4注释规范
4.1基本原则
Ø注释应该增加代码的清晰度。
代码注释的目的是要使代码更易于被其他开发人员等理解;
Ø保持注释的简洁;
Ø注释信息不仅要包括代码的功能,还应给出原因;
Ø除变量定义等较短语句的注释可用行尾注释外,其他注释当避免使用行尾注释。
Ø当代码有变更时,需要同时更新注释;
4.2JavaDoc
对类、方法、变量等的注释需要符合JavaDoc规范,对每个类、方法都应详细说明其功能、条件、参数等,并使用良好的HTML标记格式化注释,以使生成的JavaDoc易阅读和理解。
4.3类与接口注释
在每个类或接口的头部都应该包含该文件的功能、作用、作者、版权以及创建、修改记录等。
类与接口注释示例
/*===========================================================
*Created:
[2006-1-1110:
56]bychenkb
*V1.0
*Updated:
[2006-2-1012:
11]bychenkb
*============================================================
*
*ProjectName:
AppDemo
*
*Description:
定义字符串操作时所需要用到的方法,如转换中文、HTML标记处理等
*
*============================================================
*
*CopyrightInformation.
*
*===========================================================*/
4.4方法注释
Ø依据标准JavaDoc规范对方法进行注释,以明确该方法功能、作用、各参数含义以及返回值等;
Ø复杂的算法用/**/在方法内注解出;
Ø返回值当注释出失败、错误、异常时的返回情况;
Ø异常当注释出什么情况、什么时候、什么条件下会引发什么样的异常。
方法注释示例
/**
*执行查询
*
*该方法调用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()
4.5BO\DTO\ORMAPPING注释
BO或DTO等值对象往往用于数据持久化或数据传递,为明确各个数据字段的具体含义,避免理解歧义或误用,需要给每个字段加上简明扼要的注释。
OR-MAPPING注释示例
姓名
迁移名称
外文姓名
曾用名
性别
出生日期
有效证件类别
证件号码
迁移证件号码
4.6常量定义注释
统一定义和维护的静态常量往往代表着某种具体的含义,会被频繁重用且控制着一些重要的判断逻辑,常量的注释显得尤为重要。
定义常量时,需要明确说明该常量代表的业务含义:
常量定义注释示例
/**试用期转正**/
publicstaticfinalStringITEM_WAGE_PROBATION_AFFIRM="20030330";
/**学历变动**/
publicstaticfinalStringITEM_WAGE_EDUCATION="20030340";
/**同系列职务变动**/
publicstaticfinalStringITEM_WAGE_SAME_SERIES="2004041";
/**奖励**/
publicstaticfinalStringITEM_WAGE_AWARD="20030370";
/**处分处罚**/
publicstaticfinalStringITEM_WAGE_PUNISH="20030380";
4.7配置文件注释
平台提供了统一的property格式配置文件及读取值的API。
针对一些相对固定且用户又有可能修改的常量,要求通过配置文件存储,如上传文件的存储路径、关联系统URL等。
所有的配置项,均要求有明确的注释:
常量定义注释示例
##workflowserverconnectionflag:
Y-open/N-close
workflow.server.connection.open=N
##securitycheckflag:
Y-check/N-ignore
security.check.enabled=Y
5命名规范
5.1命名原则
规范的命名能使程序更易阅读,从而更易于理解。
它们也可以提供一些标识功能方面的信息,有助于更好的理解代码和应用。
Ø用能准确表达语义的英文单词(或常用单词的简写)组合;
Ø禁止用汉语拼音简写或汉字命名;若无法用英文准确表达,可用汉语拼音全拼代替;
Ø采用大小写混合,提高名字的可读性。
一般应该采用小写字母,但是类和接口的名字的首字母,以及任何中间单词的首字母应该大写。
包名全部小写;
正确:
HelloWorld
错误:
helloWorld,Hello_World
Ø避免使用超长名字(最好不超过25个字母);
Ø避免使用相似或者仅在大小写上有区别的名字;
Ø避免使用数字,但可用2代替to,用4代替for等,如:
go2Jsp。
5.2包命名
格式:
前缀.系统名.[子系统名].[模块名].平台固定package
示例:
com.appdemo.client.web
com.appdemo.client.service
注:
所有字母一律小写
5.3Jsp命名
小写字母开头,单词之间靠“_”连接。
正确:
some_view.jsp;some_new.jsp
错误:
SomeJsp.jsp;Somejsp.jsp;some_Jsp.jsp
5.4Action命名
类名:
大写字母开头,其后各单词首字母大写。
格式:
SomeAction.java
示例:
ClientAction.java
变量名:
小写字母开头,其后各单词首字母大写。
格式:
someAction
示例:
clientAction
5.5Façade命名
接口类名:
大写字母开头,其后各单词首字母大写。
格式:
SomeFacade.java
示例:
ClientFacade.java
实现类名:
大写字母开头,其后各单词首字母大写。
格式:
SomeFacadeImpl.java
示例:
ClientFacadeImpl.java
变量名:
小写字母开头,其后各单词首字母大写。
格式:
someFacade
示例:
clientFacade
5.6Service命名
接口类名:
大写字母开头,其后各单词首字母大写。
格式:
SomeService.java
示例:
CustomerService.java
实现类名:
大写字母开头,其后各单词首字母大写。
格式:
SomeServiceImpl.java
示例:
CustomerServiceImpl.java
变量名:
小写字母开头,其后各单词首字母大写。
格式:
someService
示例:
customerService
5.7BO命名
类名:
大写字母开头,其后各单词首字母大写。
格式:
Some.java
示例:
Customer.java
变量名:
小写字母开头,其后各单词首字母大写。
格式:
some
示例:
customer.
5.8DAO命名
接口类名:
大写字母开头,其后各单词首字母大写。
格式:
SomeDAO.java
示例:
CustomerDAO.java
实现类名:
大写字母开头,其后各单词首字母大写。
格式:
SomeHibernateDAO.java;SomeJdbcDAO.java
示例:
CustomerHibernateDAO.java
变量名:
小写字母开头,其后各单词首字母大写。
格式:
someDAO
示例:
customerDAO
5.9DTO命名
类名:
大写字母开头,其后各单词首字母大写。
格式:
SomeDTO.java
示例:
CustomerDTO.java
变量名:
小写字母开头,其后各单词首字母大写。
格式:
someDTO
示例:
customerDTO
5.10方法命名
Ø方法的命名应采用完整的英文描述符,大小写混合使用:
所有中间单词的第一个字母大写。
Ø方法名称的第一个单词常常采用一个有强烈动作色彩的动词。
Ø取值类使用get前缀,设值类使用set前缀,判断类使用is(has)前缀。
例:
getName()
setName()
isLogon()
5.11常量命名
Ø全部大写,单词之间通过下划线区分
Ø例如:
publicstaticfinalintDAYS_OF_WEEK=7;
错误:
publicstaticfinalintdaysOfWeek=7;
注:
通用的常量按类别集中在一个文件中定义。
5.12变量和参数命名
对不易清楚识别出该变量类型的变量应使用类型缩写作其前缀,如字符串使用strXXX,boolean使用isXXX,hasXXX等等。
除第一个单词外其余单词首字母大写。
例如:
strFirstName
错误:
firstname;FirstName;First_Name
5.13JNDI资源命名
格式:
资源类型/应用名称/资源名称
说明:
资源名称以大写字母开头,单词之间用大小写区分。
其它字段全部小写。
示例:
数据源:
jdbc/appdemo/DefaultDS
5.14异常命名
Ø异常类名由表示该异常类型的单词和Exception组成,如ActionException。
Ø异常实例一般使用e、ex等,在多个异常时使用该异常名或简写加E,Ex等组成。
如:
SQLEx
ActionEx
6声明与定义
6.1导入包
在导入包时当完全限制代码所使用的类的名字,尽量少用通配符的方式,但导入一些通用包,或用到一个包下大部分类时(超过5个),则可是使用通配符方式,如:
importcom.appdemo.services.CustomerService;
importcom.util.*;
6.2类与接口
类、接口定义语法规范:
[可见性][('abstract'|'final')][Class|Interface]class_name
[('extends'|'implements')][父类或接口名]{
}
如:
publicclassLoginActionextendsBaseActionimplemnetsActionListener{
}
6.3方法
声明原则:
尽量限制成员函数的可见性。
如果成员函数没必要公有(public),就定义为保护(protected);没必要保护(protected),就定义为私有(private)。
方法定义语法规范:
[可见性][('abstract'|'final')]['synchronized'][返回值类型]method_name(参数列表)[('throws')][异常列表]{
//功能模块
}
如:
publicListlistAllUsers()throwsDAOException{
}
类中各方法声明顺序:
构造方法
静态公共方法
静态私有方法
受保护方法
私有方法
继承自Object的方法
6.4字段
字段定义语法规范:
[(‘public’|’private’|’protected’)][(‘final’|’volatile’)][‘static’][‘transient’]data_typefield_name[‘=’expression]‘;’
声明顺序:
常量
类变量
实例变量
公有字段
受保护字段
私有字段
7表达式与语句
7.1控制语句
Ø判断中如有常量