版本1.3页码:1/7(一)注释规则注释应该增加代码的清晰度,注释出谁在什么时候为什么做了一些事,而不仅仅是做了什么。尽量使用javadoc标志,为类生成文档。Java中有三种注释方法:单行注释符(//),块注释符(/*/)和文档注释(/***/)(1)单行注释符(//)//注释符用来对一行代码添加说明型描述,常见使用如下:a.变量注释,对变量的定义做出说明,不同的行之间要对齐,如下intlevel;//indentationlevelintsize;//sizeoftableb.添加在一行代码结尾或一段代码开始用于对代码进行描述if(foo1){//Doadouble-flip....}else{returnfalse;//Explainwhyhere.}(2)块注释符(/**/)用于注释一段代码或添加多行说明,如:/**Hereisablockcomment.*Commentcontinues…*如果该文件不是修改人创建的,还需要添加修改人,时间等信息*/(3)文档注释(/***/)文档注释使用/**开头,在使用javadoc对java代码制作文当时会自动将代码中的文档注释添加到文档中去。在所有class开头和每个方法前都应该加上/**…*/注释,便于自动生成html格式的类库指南。(包括但不限于beans,action,form,dao)对于class的文档注释应该写在class申明语句前,并且拥有如下格式:/***pTitle:续期收费请求对象/p*pDescription:封装页面提交的请求数据/p*pCopyright:Copyright(c)2002/p上海酷克信息科技有限公司行业信息化专家页码:2/7保密要求:机密函件*pCompany:Co.,Ltd./p*@since2008-08-20*@authorKevinQiu*@version1.0*/publicclassRenewChargeRO{}(4)方法注释/***查询续期应收费用列表:查询指定保单号码保单的续期应收费用信息,*如果是修改,还应注明修改人及修改时间BR*@paramsPolicyCode保单号码*@returnCollectionofRenewChargeVO应收费用信息列表*@throwsException所有发生可能的异常*/publicCollectiongetRenewChargeList(StringsPolicyCode)throwsException;注释开始是对方法的描述。Param是对参数的描述,return是返回类型的描述,throws是对抛出异常的描述。严格按照文档注释的规范写出完整的注释后,程序生成的HTML类库指南就很详细,方便其他使用该类的程序员查阅和使用。上海酷克信息科技有限公司行业信息化专家页码:3/7保密要求:机密函件(二)BEANS定义规范1、字段名称的取法符合规范,详细情况以数据字典为准,一般采用英文去掉元音后的三字母简写,例如,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)privateStringusercode;5、每个定段必须要用行注释“//”的形式来说明字段的意义,每行注释必须对齐,说明必须清晰,如果该字段内容来自于SysItem,则需在注释中说明ITEMID键值等。6、在定义中,我们使用的类型仅为String、Double、Integer、Date、Long型,不使用其它类型(在保险相关的项目中,所有的日期型均使用Date型,其它类型项目使用Long型)。上海酷克信息科技有限公司行业信息化专家页码:4/7保密要求:机密函件(三)JSP或HTML页面规范1、下拉列表需要使用divclass=box1divclass=box2/div/div框起来。2、标识为必需录入框的语句为spanclass=hintcolor*/span,该标识放置于录入框的后面。3、如何格式化数字,f:formatNumbervalue=${tamt}pattern=#,##0.00/4、一般中文或是字符串要求左对齐;定长数据可以居中(如固定长度日期,固定长度订单号,固定长度身份证,定长代码等),数字要求右对齐(后面再放置“ ”占位),且必须格式化,如#,##0.00这种,单价/金额/发票/一般保留二位,重量与常规的数量保留整数。5、页面上所有的录入框、下拉列表等,必须使用适当的clsass或StyleClass类型,控件的长度一般一致,每行三列数据项的方式排列。6、Jsp或是Html文件名首字母必须大写。7、Jsp中使用TABLE时,其中的tr、td要有缩进及对齐。8、对action中返回到Jsp的List-objs,除了能直接使用对象的外,一律使用数组的方式实现输出,如下所示:tdalign=center${objs[0]}-${objs[1]}/tdtdalign=center${objs[2]}/tdtdalign=center${objs[3]}/td9、jsp/java中不得有任何引起警告的代码。10、在任何一个JSP中,对JSP的BODY使用如下样式,支持按回车跳下一个控件bodytopmargin=0leftmargin=0onselectstart=javascript:returnfalse;onkeydown=OnKeyTab();11、在JSP中,如果以按钮提交的方式来定义提交对应的类型,通用方法强制用以下方法命名保存:inputtype=submitname=eventSubmit_Savestyle=display:none/编辑:inputtype=submitname=eventSubmit_Editstyle=display:none/删除:inputtype=submitname=eventSubmit_Deletestyle=display:none/查询:inputtype=submitname=eventSubmit_Liststyle=display:none/12、在JSP中,如果以activeType的方式来定义提交类型,通用方法强制用以下代码表示:保存:html:hiddenproperty=actionTypevalue=1/编辑:html:hiddenproperty=actionTypevalue=2/删除:html:hiddenproperty=actionTypevalue=3/查询:html:hiddenproperty=actionTypevalue=4/13、对于有CODE及NAME形式显示的资料,在页面上一律使用CODE-NAME的形式显示给用户。14、查询及报表保证所有查询条件的有效性;汇总及明细一致性,查询结果及报表输出的一致性;不同查询或是报表的结果一致性,页面常见功能的有效性。无论何种情况,如果报表与查询需求并非一致,不能放在同一页面中。任何报表,必须先有查询及JSPList,才能有打印。报表的风格要求:按公司报表模板执行。上海酷克信息科技有限公司行业信息化专家页码:5/7保密要求:机密函件(四)JAVA编程规范1、通用命名规范标识符类型命名规则示例Packages包名全部使用小写字母。包名类似如下结构:域.公司名.项目名.模块名.功能名.组件名info.kuke.life.ps.cancellation.hesitate.beanClasses类名要求使用简单的,能描述类功能的名词,避免使用缩写(通用缩写如URL、HTML除外)。标记符中所有单词都应紧靠在一起,每一单词首字母大写,其余字母小写。classPolicyProductServletAction,Form,Dao出以上类名规则外,还要在后面加上Form,Dao,Action后缀Interfaces命名规则同classesinterfaceRenewChargeDAOMethods方法名使用动词,要求能简单描述方法实现的功能。标记符中所有单词都应紧靠在一起,第一个单词首字母小写,其它单词首字母大写,其余字母小写。doProcess();getPolicyCode();Variables变量名要求简单并且有含义。变量名中所有单词都应紧靠在一起,第一个单词首字母小写,其它单词首字母大写,其余字母小写。在变量名中避免使用_和$符号。一些通用的临时变量如整型使用i,j,k,字符型使用c,d,einti;charc;BigDecimalfundPrice;Constants常量名全部使用大写字母并且单词间使用_分隔StaticfinalintFEE_TYPE_R=44;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”类型,不建议使用数据库的函数完成转换,因为不能使用程序通用化,参考以下代码:SimpleDateFormatdf=newSimpleDateFormat(yyyy-MM-ddHH:mm:ss.SSS);上海酷克信息科技有限公司行业信息化专家页码:6/7保密要求:机密函件inti=0;for(Iteratorit=page.getList().iterator()