JAVA技术开发标准
(一)注释规则
注释应该增加代码的清晰度,注释出谁在什么时候为什么做了一些事,而不仅仅是做了什么。尽量使用javadoc标志,为类生成文档。
Java中有三种注释方法:单行注释符(//),块注释符(/* /)和文档注释(/** */)
(1)单行注释符(//)
//注释符用来对一行代码添加说明型描述,常见使用如下:
a.变量注释,对变量的定义做出说明,不同的行之间要对齐,如下
int level; // indentation level
int size;// size of table
b.添加在一行代码结尾或一段代码开始用于对代码进行描述
if (foo > 1) {
// Do a double-flip.
...
}
else{
return false; // Explain why here.
}
(2)块注释符(/* */)
用于注释一段代码或添加多行说明,如:
/*
* Here is a block ment.
* ment continues…
* 如果该文件不是修改人创建的,还需要添加修改人,时间等信息
*/
(3)文档注释(/** */)
文档注释使用/**开头,在使用javadoc对java代码制作文当时会自动将代码中的文档注释添加到文档中去。在所有class开头和每个方法前都应该加上/**…*/注释,便于自动生成html格式的类库指南。(包括但不限于beans,action,form,dao)
对于class的文档注释应该写在class申明语句前,并且拥有如下格式:
/**
*
Title: 续期收费请求对象
*
Description: 封装页面提交的请求数据
*
Copyright: Copyright (c) 2002
*
pany: Co., Ltd.
* since 2008-08-20
* author Kevin Qiu
* version 1.0
*/
publicclass RenewChargeRO {}
(4)方法注释
/**
* 查询续期应收费用列表:查询指定保单保单的续期应收费用信息,
* 如果是修改,还应注明修改人及修改时间
* param sPolicyCode 保单
* return Collection of RenewChargeVO 应收费用信息列表
* throws Exception 所有发生可能的异常
*/
public Collection getRenewChargeList(String sPolicyCode) throws Exception;
注释开始是对方法的描述。Param是对参数的描述,return是返回类型的描述,throws是对抛出异常的描述。
严格按照文档注释的规X写出完整的注释后,程序生成的HTML类库指南就很详细,方便其他使用该类的程序员查阅和使用。
(二)BEANS定义规X
1、字段名称的取法符合规X,详细情况以数据字典为准,一般采用英文去掉元音后的三字母简写,例
如,code,简写cde;name简写nme;department简写 dpt;年月简写ptyear,ptmnth,金额简写orgamt,occamt,accamt;日期简写 ptdate,occdat,effdat,strdat,endate等。
2、String类型必须定义适当的长度;Double、Float类型必须定义适当的长度及精度
Column(nullable = true,length =10) ,如果是长文档备注类型,直接定义为Lob类型
Column(nullable = true,precision=14, scale=2)
3、可以为列建唯一索引,如下所示
Column(nullable = true,length =15,unique=true)
columnDefinition,为列设定默认值
4、按适当的情况定义主键及复合索引等
Table(name="sys_clnt",uniqueConstraints={UniqueConstraint(columnNames={"clntid","simpname"})})
定义本Beans的主键,主键可以是Integer,String,Date等类型
Id
TableGenerator(name = "SId", table = "sysid", pkColumnName = "id", valueColumnName = "tableid", pkColumnValue = "5", allocationSize = 1, initialValue = 10000000) GeneratedValue(strategy = GenerationType.TABLE, generator = "SId") Column(nullable = false,length =10)
private String usercode;
5、每个定段必须要用行注释“//”的形式来说明字段的意义,每行注释必须对齐,说明必须清晰,如果该字段内容来自于SysItem,则需在注释中说明ITEMID键值等。
6、在定义中,我们使用的类型仅为String、Double、Integer、Date、Long型,不使用其它类型(在保险相关的项目中,所有的日期型均使用Date型,其它类型项目使用Long型)。
(三)JSP或HTML页面规X
1、下拉列表需要使用
2、标识为必需录入框的语句为*,该标识放置于录入框的后面。
3、如何格式化数字,
4、一般中文或是字符串要求左对齐;定长数据可以居中(如固定长度日期,固定长度订单号,固定
长度XX,定长代码等),数字要求右对齐(后面再放置“ ”占位),且必须格式化,如"#,##0.00"这种,单价/金额/发票/一般保留二位,重量与常规的数量保留整数。
5、页面上所有的录入框、下拉列表等,必须使用适当的clsass或StyleClass类型,控件的长度一般
一致,每行三列数据项的方式排列。
6、Jsp或是Html文件名首字母必须大写。
7、Jsp中使用TABLE时,其中的
8、对action中返回到Jsp的List->objs,除了能直接使用对象的外,一律使用数组的方式实现输出,
如下所示:
9、jsp/java中不得有任何引起警告的代码。
10、在任何一个JSP中,对JSP的BODY使用如下样式,支持按回车跳下一个控件
11、在JSP中,如果以按钮提交的方式来定义提交对应的类型,通用方法强制用以下方法命名
保存:
编辑:
删除:
查询:
12、在JSP中,如果以activeType的方式来定义提交类型,通用方法强制用以下代码表示:
保存:
编辑:
删除:
查询:
13、对于有CODE及NAME形式显示的资料,在页面上一律使用CODE-NAME的形式显示给用户。
14、查询及报表
保证所有查询条件的有效性;汇总及明细一致性,查询结果及报表输出的一致性;不同查询或是报表的结果一致性,页面常见功能的有效性。
无论何种情况,如果报表与查询需求并非一致,不能放在同一页面中。
任何报表,必须先有查询及JSP List,才能有打印。
报表的风格要求:按公司报表模板执行。
(四)JAVA编程规X
1、通用命名规X
2、action & form中的特殊命名要求:
a.ActionMappin命名为mapping;ActionForm命名为pForm;HttpServletRequest命名为req;
HttpServletResponse命名为res;
b.Action中用于拼装SQL条件的StringBuffer变量一律命名为hql或sql,如果需要二个以上,
则是hql0/sql0、hql1/sql1、hql2/sql2……
3、所有分页查询的action一律使用getList或getListBySQL这二个函数完成,如果使用这二个函
数,引用方法一律为DAO.getList……的形式。
a、特殊情况下,使用executeSQLQuery或executeQuery获取数据,则需在action中添加代码
if(pForm.getRowsPerPage()!=0)
page.setRowsPerPage(pForm.getRowsPerPage());
4、对数据库中选出的分页记录中的Long型日期,在action中直接转化为页面需要的”yyyy-MM-dd”
类型,不建议使用数据库的函数完成转换,因为不能使用程序通用化,参考以下代码:SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
int i=0;
for(Iterator it = page.getList().iterator();it.hasNext();){ Object[] si = (Object[])it.next(); si[5]=(si[5]!=null?df.format(new Date(Long.valueOf(si[5].toString()))):""); page.getList().set(i, si);
i++;
}
5、所有的方法必须有方法注释,详见前面的格式;如果程序超过200行左右的代码,应该分为不同的方法或是函数,维护程序的可读性。
6、任何JAVA代码中不能有引起警告状态;对不得不使用而导致的情况按以下方法进行处理。SuppressWarnings("deprecation")
SuppressWarnings("unchecked ")
SuppressWarnings({"deprecation", "unchecked"})
7、常规程序要求:事务提交的一致性及错误回滚要求;程序功能流转保证正确,相关数据准确无误,含各种验证及错误处理,不能有应用服务器的报告错误页面出现
8、代码缩排规则
(1)同行的代码缩排的间距一般定为4个空格,Tab键一般设为4个空格。
(2)行代码或注释的长度尽量少于80个字符,如果一行代码过长,应该换行。
(3)逗号后加空格后再写其他代码,在每个运算符前后也都要留有空格。
(4)长的语句(>80字符)要分成多行书写,长表达式要在低优先级操作符处划分新行,操作符放在新行之首,划分出的新行要进行适当的缩进,使排版整齐,语句可读。
(5)表达式在换行时应该首先考虑在优先级高的运算符处换行,新行的开始位置应该和原先行的
相应字符对齐。如:
longName1 = longName2 * (longName3 + longName4
- longName5) + 4 * longname6;
应该写成
longName1 = longName2 * (longName3 + longName4 - longName5)
+ 4 * longname6;
例如SQL拼装式例,每个字段分一行,”,”放在字段的前面,如下所示。
sql.append("select orgcode" +
",organizename" +
",ptyear" +
",ptmnth," +
",ab");
(6)对独立的程序块之间、变量说明之后必须加空行。
(7)函数或过程中的参数较长,则要进行适当的划分。
(8)不允许把多个短语句写在一行中,即一行只能写一条语句。
(9)if、for、do、while、case、switch、default等语句自占一行,且if、for、do、while等语句的执行语句部分无论多少都要加括号{}。
(10)对齐只使用TAB,不使用空格键。