J2EE项目开发编码规范.docx
- 文档编号:6258253
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:23
- 大小:54.97KB
J2EE项目开发编码规范.docx
《J2EE项目开发编码规范.docx》由会员分享,可在线阅读,更多相关《J2EE项目开发编码规范.docx(23页珍藏版)》请在冰豆网上搜索。
J2EE项目开发编码规范
J2EE项目开发规范
一JAVA编码规范
1命名规范
1.1包命名
●包名称必须全部用小写。
●命名方式:
业务领域名.子系统名.层名如com.environment.apps。
1.2类命名
类名以英文单词取名,首字母必须大写,多个英文单词以大写字母间隔,避免使用单词的缩写,除非它的缩写已经广为人知,如HTTP。
类名中不允许‘_’、‘-’等符号。
1.3属性/local变量命名
●定义属性的位置,在类定义的开始,按照public,protected,package,private顺序放置。
定义local变量尽量在那段代码的开始处,如方法的开始处。
如果是if,for,while段,尽量在左大括号“{”的下一行处定义要使用的local变量。
●尽量用相同含义英文单词表示,不允许‘_’、‘-’等符号,如:
custName。
第一个字母小写,中间单词的第一个字母大写。
不要用_或&等符号作为第一个字母。
单字符的变量名一般只用于生命期非常短暂的变量。
如:
i,j,k,m,n一般用于int。
如果变量是集合,则变量名应用复数,即以小写s结尾。
例如:
序号
变量名称
注释
1
strfileName
“文件名”字符串类型
2
intfileCount
“文件总数”整型
3
strnames
多个“文件名”的集合
4
gMemory
全局变量
●基本类型变量命名清单
类型
前缀
示例
int
int
intPageIndex
long
lng
lngCount
byte
byt
bytPixel
boolean
bln
blnEmpty
double
dbl
dblSalary
float
flt
fltSalary
String
str
strUserName
char
chr
chrDrive
Object
obj
objAccount
1.4常量命名
所有常量名均全部大写,单词间以‘_’隔开。
例如:
序号
常量名称
注释
1
MAX_NUM
最大数
2
publicstaticfinalStringFUNCTION_LIST="function_list";
…
3
…
…
1.5方法命名
方法命名采用“动作+属性”的方法。
并且,动作以小写字母开始,属性以大写字母开始。
常用的动作有:
is、get、set、save、add、del等。
例如:
getName、setName、isSysManager、saveXXX、mdfXXX、delXXX等。
规则名称
规则
说明
新增数据
addXXX
修改数据
updateXXX
变更数据
alertXXX
删除数据
delXXX
查看详细信息
viewXXX
查询数据
queryXXX
进入某个功能页面
entryXXX
下一步
next、nextToXXX或entryXXX
1.6其他命名
开发人员如果遇到上述表格中未列举的类型,请书面通知相关管理人员,由管理人员集中更新列表内容,不得擅自启用未经确定的新变量前缀。
2编码规范
2.1程序基本构成
a)公用元素
公用元素指“公用变量”、“公用类”等,由于公用元素对程序中所有类都是可见的,故对它们的修改将会对整个程序造成影响。
“公用变量”过多也会破坏数据的隐藏性,与“面向对象编程”的规范不符。
所以,公用变量的使用请慎重考虑。
b)函数返回值
注意函数返回值的初始化。
c)代码段注释
“//”注释用于对程序的注解等。
“/*....*/”注释用于对程序修改时临时删除部分程序代码。
注:
是否作为“临时代码删除和对程序的注释”仅作为参考,根据具体情况而定
d)设定初值
所有变量均应设定其初值,而且变量的初值不应依靠编译程序自动设定。
e)错误返回值
调用方法后,应检查errno或方法返回值,以确定操作是否完成。
若返回错误,返回对应的错误编码。
f)内存释放
当原先分配的内存不在需要时,应将其释放。
g)类及方法注释
在类、方法开始之前需要添加中文注释,类和方法的注释采用Java自动生成的注释格式,即输入/**回车后生成的注释格式。
●类注释
【格式】
/**
*类功能说明
*类修改者修改日期
*修改说明
*
Title:
ZDK
*
Description:
南华中天J2EE运行支撑及快速开发平台
*
Copyright:
Copyright(c)2006
*
Company:
重庆南华中天信息技术有限公司
*@author类创建者名字 创建日期
*@version版本号
*/
●函数注释
【格式】
/**
*函数功能说明
*创建者名字创建日期
*修改者名字修改日期
*修改内容
*@param参数名称参数类型参数说明
*@return返回值类型返回值说明
*/
循环语句和判断语句前必须注释。
特殊变量声明时需要注释。
●程序段注释
【格式】
如果做过修改需加上修改者和日期
//修改者修改日期说明
或者
/**
*修改者修改日期
*说明
*/
●变量或属性注释
【格式】
//说明
或者
/**
*说明
*/
2.2代码格式
格式缩进
用分层缩进的写法显示嵌套结构的层次;巢串式陈述句应比外层陈述句内缩四格。
【范例】
importjava.util.*;
importjava.awt.*;
importjava.applet.Applet;
importjava.awt.event.*;
importjavax.swing.*;
/**
*类功能说明
*类修改者修改日期
*修改说明
*
Title:
ZDK
*
Description:
南华中天J2EE运行支撑及快速开发平台
*
Copyright:
Copyright(c)2006
*
Company:
重庆南华中天信息技术有限公司
*@author类创建者名字 创建日期
*@version版本号
*/
publicclassWFextendsJAppletimplementsActionListener{
WFPanelwfpanel;
PanelcontrolPanel;
WFPropwfprop;
NodePropnodeprop;
EdgePropedgeprop;
JButtonjbAddNode=newJButton("添加节点");
JButtonjbAddEdge=newButton("添加路由");
JButtonjbDelNode=newButton("删除节点");
JButtonjbDelEdge=newButton("删除路由");
JButtonjbClose=newButton("关闭");
privateJPaneljpPane=null;
privateJToolBarjtbTools=null;
privateJPaneljpCanvas=null;
privateJNodePropjnpNodeProp=null;
}
【说明】适当内缩后的程式能表现出逻辑结构,并增进可读性,易于理解。
【范例】
publicclassWFextendsJAppletimplementsActionListener{
WFPanelwfpanel;
PanelcontrolPanel;
WFPropwfprop;
NodePropnodeprop;
EdgePropedgeprop;
JButtonjbAddNode=newJButton("添加节点");
JButtonjbAddEdge=newButton("添加路由");
JButtonjbDelNode=newButton("删除节点");
JButtonjbDelEdge=newButton("删除路由");
JButtonjbClose=newButton("关闭");
privateJPaneljpPane=null;
privateJToolBarjtbTools=null;
privateJPaneljpCanvas=null;
privateJNodePropjnpNodeProp=null;
}
空白行
逻辑上相关序代码与其前后之程序代码间应以空白行加以分隔;在注释段与程序段、以及不同程序段插入空行。
每行只写一条语句。
【说明】适当地使用空白行可以使程序的逻辑结构更清楚,而提高其可读性。
2.3异常处理
在当前的系统架构中,系统自下而上被分为持久化层(OP)、业务处理层(BP)、请求处理层(RP)、struts、界面层(UI),本规范约定了持久层、业务处理层、请求处理层的异常处理机制。
I异常处理总原则
1.下层只向上层抛一类异常。
如:
业务处理层只向请求处理层抛ApplicationException异常。
2.为了使系统能够更好的跟踪运行情况,必须把底层异常放入新异常中。
如:
thrownewApplicationException("查询单位时发生系统异常",e)
3.如果一个层要抛出多个异常,那么所有自定义异常必须统一继承一个父类异常。
这样上层可以通过父类异常捕获
4.异常统一在请求处理层(rp层),即action里进行处理,请求处理层以下的层次在处理异常时,只需要把底层的异常类放到本层约定的异常类中,并抛出,如有需要可以加适当的异常消息,并不需要记录LOG,LOG在框架里会自动处理。
II请求处理层的异常处理
所有的action继承于BizDispatchAction、BizLookupDispatchAction或CommonQueryAction,在异常处理的时候直接调用父类的saveErrors方法
如:
try{
enterprise=service.search(newLong(
enterpriseID));
BeanUtils.copyProperties(myform,enterprise);
log.info("Enterprise="+enterprise.getName());
}
catch(NumberFormatExceptionex){
saveErrors(request,ex,"数据格式化出错!
");
III页面层异常的处理
引入xxx标签库,然后在页面中加入 errors/>标签,页面就会自动将Action中保存的错误信息取出,显示在弹出窗口。 如: <%@tagliburi="lemis.tld"prefix="lemis"%>
errors/> 2.4事务处理 当前的系统架构中支持嵌套事务,事务管理必须通过系统框架提供的事务管理类(TransManager)来完成。 1)事务调用方法 ●开始事务 trans.begin() ●提交事务 mit() ●回滚事务 trans.rollback() 事例代码 try{ trans=newTransManager(); flag=trans.begin();//事务开始 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 if(1==flag) mit();//事务提交 }catch(OPExceptione){ try{ //事务回滚 trans.rollback(); }catch(OPExceptione1){ thrownewApplicationException(e1); } thrownewApplicationException(e); } 2.5页面文件部署 (一)页面部署总原则 1.文件夹名称全部小写 2.jsp文件名称小写开头 (二)页面部署清单 名称 位置 说明 Css样式表单 cqxxx\css Xxx是项目名称的缩写 图片 cqxxx\images Javascript cqxxx\js Htc cqxxx\htc 标签库配置文件(tld) cqxxx\WEB-INF Struts配置文件 cqxxx\WEB-INF 引入的包 cqxxx\WEB-INF\lib xxx的配置文件 cqxxx\WEB-INF\conf Hibernate的配置文件 cqxxx\WEB-INF\classes Jsp文件 cqxxx\。 。 。 … … 二框架包结构 所有包名以”zenith.ep.xxx”开始。 其中“xxx”为各子项目的名称。 按功能模块划分包: log: 该包中定义和日志有关的类; exception: 该包中定义自己的异常类; web: 该包中定义所有和表现层有关的类; 子包: servletproxy: 存放servlet处理标签组件的AJAX请求 tag: 存放标签类 子包 model存放标签支持类(组件的数据处理类) validator存放标签校验类 template: 存放模板处理类 i18n: 存放国际化处理类 util: 该包中定义通用工具类 common: 公共属性类 三标签组件命名规范 1组件名称 以标准的HTML元素为准,如果是组合元素取名时可参考VB的命名规则。 2属性 命名规则同上,尽量用相同含义英文单词表示,小写字母开头,多个英文单词之间以大写字母间隔,不允许‘_’、‘-’等符号,如: custName; 3属性常量 属性常量命名规则可参考HTML元素手册或VB的标准控件。 前后台命名一致 增加常量后应在常量记录表中增加记录,避免命名重复和查看。 所用组件 组件属性 常量名称 取值 常量说明 window state MIN_WINDOW 1 最大化窗口 MAX_WINDOW 2 最大化窗口 4方法 命名规则同上,尽量用相同含义英文单词表示,小写字母开头,多个英文单词之间以大写字母间隔,不允许‘_’、‘-’等符号,如: custName; 5事件 命名规则同上,事件以on开头,如: onclick 四javascript编码规范 1命名规范 1.1类命名 以xxx为根类,其功能类以“.”符号+类名进行定义如xxx.Base 1.2属性命名 命名规则同JAVA。 1.3方法命名 命名规则同JAVA。 私有方法用前面加”_”符号进行区别。 全局函数前面加”g”符号进行区别 1.4变量命名 命名规则同JAVA 局部变量前面加”_”符号进行区别。 (可选) 全局变量前面加”g”符号进行区别。 1.5其他命名 开发人员如果遇到上述表格中未列举的类型,请书面通知相关管理人员,由管理人员集中更新列表内容,不得擅自启用未经确定的新变量前缀。 2编码规范 请参看JAVA编码规范 必须以Prototype.js所定义的原形进行编码。 所有的组件类必须继承ZenithTag.Base基类。 每个类必须有initialize类初试化函数 _SetOptions初试化属性函数 ._SetListeners绑定事件函数 在_SetOptions中必须调用基类的_setBaseOptions函数设置基类的属性 代码格式如下: ZenithTag.Select=Class.create();//构造函数 ZenithTag.Select.prototype=Object.extend(newZenithTag.Base(),{ //类原形定义继承ZenithTag.Base()类 initialize: function(url,options){//类初试化函数url处理请求的urloptions传入参数对象 this.url=url;//得到处理请求的url this._SetOptions(options);//设置初始参数 this._SetListeners();//设置事件监听 }, //设置初始参数 _SetOptions: function(options){ this._setBaseOptions(options)//设置基类的属性 this.options=Object.extend({ Id: options.Id,//控件ID Type: options.Type? options.Type: "0",//控件类型 Color: options.Color? options.Color: "#000000" }), _SetListeners: function(){//设置事件监听 this.Button.onclick=this._OnShowPopup.bindAsEventListener(this);//绑定单击按钮事件弹出下拉窗口 this.InputText.parentElement.onclick=this._OnShowPopup.bindAsEventListener(this);//绑定单击按钮事件弹出下拉窗口 this.InputText.onchange=this._OnInputChange.bindAsEventListener(this);//绑定输入框内容改变事件 },} 五国际化 1实现国际化的要求 要实现国际化必须统一使用UTF-8字符集(包括,jsp页面,js文件,request,response,和数据库字符集) 2系统需要国际化的部分 ●控件提示(tooltip),及要控件中需要显示到页面上的文本部分 ●用户消息提示(包括错误,成功消息) ●javascript字符 ●日志, 资源文件始终提供默认资源文件,使用时也可以硬编码指定资源文件。 默认资源文件名称为: ApplicationResources.properties,与struts默认资源文件名称同名 3资源文件key命名规则 ●jsp文件key命名规则 jsp.jsp目录路径.jsp页面名称.key名称 ●java类文件key命名规则 包名.类名.key名称 4资源文件编码方法 需要使用jdk/bin目录下面的native2ascii.程序,首先设置setpath=xxx/jdk1.4/bin,然后在命令行进入资源文件目录运行naive2ascii程序 【语法说明】 native2ascii原资源文件名称.properties-encoding编码原资源文件名称_国家后缀.properties 如: native2asciiApplicationResources.properties-encodinggb2312ApplicationResources_zh_CN.properties 六HTML模版编写规范 HTML元素ID命名规范 如果组件是多个HTML元素组成。 其ID命名规则如下 1.客户端JS需要调用的HTML必须有ID 2.保存组件值用于表单提交的元素的ID=用户定义的组件ID 3Id命名必须体现元素之间的层次关系 4命名格式为用户定义的组件ID+组件名称+该元素的功能或元素类型 如窗口组件命名 …………………………………..
<./div>
1.1模版文件命名规范
如果是单个模版标签组件名称.ftl
如果模版有子模版命名规则为标签组件名称.+”_”+子模版名称
1.2模版变量命名规范
模版变量命名格式:
标签组件名称+”_property”
1.3模版调用规范
引用包
importzenith.ep.xxx.web.template.TemplateProcesser;
调用方式
Mapentitys=newHashMap();
entitys.put("label_property",this);
try{
TemplateProcesser.processTemplate("label.ftl",entitys,
pageContext.getOut(),
pageContext.getServletContext());
}
catch(ZDKExceptionex){
thrownewJspException(ex.getMessage(),ex);
}
七Web文件目录规范
1.1目录分类
xxx//根目录
……css//存放样式文件
……images///存放图片
……js//js文件根路径
…………lib//js引用文件路径
…………tag//存放标签类路径
…….templates//存放模版路径
1.2常量的划分与存放规则
常量分为前台常量,后台常量,标签属性常量和标签内部国际化提示字符常量。
前台常量放在constant.js文件中,命名格式为Constant.+”常量名称”,例如:
Constant.TYPE_BUTTON="button";//普通按钮"
后台常量放在GlobalNames,命名格式publicfinalstatic+常量类型+常量名称,例如:
publicfinalstaticbooleanUSE_I18N=tr
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- J2EE 项目 开发 编码 规范