JAVA编程规范.docx

上传人:b****8 文档编号:9948849 上传时间:2023-02-07 格式:DOCX 页数:29 大小:31.42KB
下载 相关 举报
JAVA编程规范.docx_第1页
第1页 / 共29页
JAVA编程规范.docx_第2页
第2页 / 共29页
JAVA编程规范.docx_第3页
第3页 / 共29页
JAVA编程规范.docx_第4页
第4页 / 共29页
JAVA编程规范.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

JAVA编程规范.docx

《JAVA编程规范.docx》由会员分享,可在线阅读,更多相关《JAVA编程规范.docx(29页珍藏版)》请在冰豆网上搜索。

JAVA编程规范.docx

JAVA编程规范

 

JAVA编程规范

编号:

IS-STD-JAVA

版本:

1.0

 

作者:

日期:

审批:

日期:

 

变更记录

日期

版本

变更说明

作者

 

目录

1导言5

1.1目的5

1.2范围5

1.3角色和职责5

1.4术语定义5

2软件层次结构编码规范6

2.1软件层次描述6

2.2软件层次编码6

3HTML标记语言编码规范8

3.1标记的换行规范8

3.2标记的关闭规范8

3.3标记的属性赋值规范8

3.4标记的缩进规范9

3.5注释9

4客户端JavaScript规范10

4.1变量命名规范10

4.2变量使用规范10

4.3对象命名规范11

4.4函数以及子过程命名规范11

4.5注释12

5JSP编程规范13

5.1风格13

5.2命名13

5.3编码14

5.3.1整个jsp/jspbean表示层应当尽可能的瘦和简单化14

5.3.2Jsp常见问题14

5.3.3html页面布局一般需要遵循以下格式15

5.3.4Jsp表现层尽量struts1标签化16

5.4注释16

6JAVA编程规范18

6.1格式18

6.1.1.缩进18

6.1.2间隔19

6.1.3空行20

6.1.4类成员的摆放顺序20

6.1.5文件格式(FileFormat)20

6.1.6行最大长度21

6.1.7括号21

6.2命名规则22

6.2.1包22

6.2.2类和接口22

6.2.3方法22

6.2.4方法参数23

6.2.5get和set方法(属性的定义)23

6.2.6变量23

6.3注释24

6.3.1要求24

6.3.2JavaDoc说明24

6.3.3类25

6.3.4方法26

6.3.5代码的自我说明26

6.4编码27

6.4.1不要使用的结构27

6.4.2不要混合使用递增运算符和递减运算符27

6.4.3变量初始化28

6.4.4魔鬼数字/字符28

6.4.5范围(scope)28

6.4.6方法28

1导言

Java语言给了程序员充分的空间随意编写自己的代码,但也正是因为如此,一个程序员自己编写的代码往往不能被别的程序员很好的阅读和理解。

1.1目的

本文档旨在提供一个编码的标准,以便所有Java代码在产生的一开始就能够在整个开发团队中保持一致,从而能够更好的阅读和修改代码。

1.2范围

本文档适用于项目开发团队的所有成员,为了使项目的后期维护和修改变的容易,在每个项目开发中一定要遵守本文档中的规定术语定义

1.3角色和职责

●编码负责人:

本规范在具体项目中执行监督负责人。

通过实施SourceReview制度,编程人员在完成自己的一个模块并提交测试前,由编码负责人进行SourceReview,不符合本编程规约的程序一律打回,重新修改,即编码人你认为自己的程序没有任何的功能问题。

●编码人员

本规范的遵守者。

1.4术语定义

●Logger-系统进行日志输出了类,为引用第三方(ApacheGroup)的输出类,具体用法见Log输出规范的说明。

2 软件层次结构编码规范

2.1软件层次描述

软件层次采取MVC2分层方式,将软件总体划分为五层,提升软件的可维护性、可扩展性以及灵活性:

●表示层:

使用JSP来进行WEB界面表现。

●业务控制层:

使用Action和Form封装业务交易处理。

●业务逻辑层(BIZ):

使用Biz或Servlet进行业务交易处理及业务规则控制。

●数据实体层(DAO):

数据持续化处理,采用Hibernate框架对业务实体与其物理实体进行映射。

●资源层(COMMON):

分页、加密、压缩、导出、日志处理、错误处理等。

2.2软件层次编码

每一层必须有注释。

1)表示层:

●JSP页面只负责显示或提交用户页面,只允许访问Action层或业务层,绝对不允许出现任何的SQL语句以及JDBC访问对象,所有SQL语句通过参数传递封装到DAO层中

●JSP页面应尽可以瘦和简单,一个页面尽量只处理一件事。

2)业务控制层(ACTION):

●ACTION层只负责逻辑控制,不负责具体的逻辑处理,只和BIZ层进行通讯,不允许直接访问数据层。

●主要包括以下功能:

Ø从页面接收参数(通过parameters或form)

Ø构造javabean对象

Ø调用Biz层处理具体业务逻辑

Ø控制页面跳转

3)业务逻辑层(BIZ):

●BIZ层负责具体逻辑处理控制,包括在处理过程中的逻辑判断:

●数据操作的事务(Transaction)在BIZ层中完成,而不是在DAO中。

4)数据实体层(DAO):

●主要负责数据库的增、删、改、查。

●如果需要连接多个表查询,则构造一个视图,把视图看成一个对象,而不是在DAO层直接写SQL语句,避免在jsp页面中出现数据库字段数组。

●数据库的增、删、改尽量用hibernate完成,如果大批量的增加数据,可考虑用JDBC代替。

5)资源层(COMMON):

包装通用的功能,提供的接口应尽量简单。

3 HTML标记语言编码规范

3.1标记的换行规范

一个标记必须占用一行。

不得出现两个标记在同一行的情况(同一标记的关闭标记除外),如:

   

text  

而必须写成:

  

 text

3.2 标记的关闭规范

●静态文件内容必须包含在标记中间

●标记必须包含在标记中间  

●对于需要关闭的标记,如:

     

、<body>、<table>、<tr>、<td>、</p><p><p>、<textarea>、<select>、<font>、<option>、<div>、<span></p><p>必须同其关闭标记同时出现。</p><p>如     </p><p><body>…<p>…<font>….</font>….</p>…..</body> 不得出现交叉包含的语句,如:</p><p>   <p><font>…..</p></font></p><p>3.3标记的属性赋值规范</p><p>对于接受属性的标记,属性值必须使用双引号包围。</p><p>如:</p><p><body bgcolor=”red”></p><p> <font size=”7”></p><p> </p><p>3.4标记的缩进规范</p><p>●最高一级的父标记采用左对齐顶格方式书写。</p><p> </p><p>●下一级标记采用左对齐向右缩进一个Tab的方式书写     </p><p>●再下一级依此类推,分别左对齐相对于父标记向右缩进一个Tab的方式书写 同一级标记的首字符上下必须对齐</p><p>3.5注释</p><p><!</p><p>----></p><p>4客户端JavaScript规范</p><p>4.1 变量命名规范</p><p>●常量以及全局变量名必须全部使用大写字母  </p><p>● 变量名首字母必须小写。</p><p>  </p><p>● 变量名必须使用其类型的所写字符串开始。</p><p>●各种类型的所写字符串如下:</p><p>  </p><p>⏹ 整型变量:</p><p>n   </p><p>⏹ 长整型变量:</p><p>l   </p><p>⏹ 浮点型变量:</p><p>f  </p><p>⏹ 双精度变量:</p><p>d   </p><p>⏹ 对象引用变量:</p><p>obj  </p><p>⏹字符串变量:</p><p>str   </p><p>⏹Date类型变量:</p><p>dt   </p><p>⏹ 变量名必须采用有意义的单词命名,如:</p><p>   strUserName、lngArrayIndex </p><p>⏹ 变量名除首字母小写外,其他单词首字符必须大写</p><p>⏹ 如果变量名过长可以使用单词缩写,除了被广泛了解的单词缩写以外,所有使用单词所写的变量名必须在定义时给出注释,如:</p><p>   </p><p>◆var strAdName //用于表示Administrator帐户的名称   </p><p>◆var strAdminName //不用给出注释,Admin被广泛了解</p><p>4.2变量使用规范</p><p>●变量使用前必须定义。</p><p>没有定义的变量禁止使用(虽然JavaScript中允许,但是做为全局变量)  </p><p>●变量的使用尽量缩小到小的作用域。</p><p>⏹如循环使用   </p><p>for(var I=0;I<12;I++)</p><p>{</p><p>//medthodbody</p><p>}   </p><p>而不是:</p><p>   </p><p>var I;  </p><p> for(I=0;I<12,I++)</p><p>{   </p><p>//medthodbody</p><p>}</p><p>4.3对象命名规范</p><p>各种页面对象如text输入框、按钮、下拉选择框在命名时必须使用以下对应前缀:</p><p>● text输入框:</p><p>txt</p><p>● button按钮:</p><p>btn</p><p>● select下拉选择框:</p><p>sel</p><p>● option项:</p><p>opt</p><p>● form表单:</p><p>frm</p><p>● frame框架:</p><p>fra</p><p>● hidden表单项:</p><p>hdn</p><p>● div标记:</p><p>div</p><p>● span标记:</p><p>span</p><p>● 对话框对象:</p><p>dlg</p><p>● 窗口对象:</p><p>win</p><p>4.4函数以及子过程命名规范</p><p>●函数命名必须使用动词+名词对的方式,并且能够体现函数的功能</p><p>● 函数命名的动词前缀必须是同函数功能相关的完整动词</p><p>● 函数命名第一个单词的首字母小写,后面每一个单词的首字母大写</p><p>1.)javascript脚本方法脚本函数都以①xxx_②xxx的方式命名。</p><p>①xxx对应页面隶属的模块。</p><p>②xxx表示函数所要实现的功能(动宾结构),多个单词用下划线连接。</p><p>例如:</p><p>ebwebmail_send_mail()</p><p>模块通用的脚本函数必须集合于一个js文件中,在页面上通过<scriptlanguage=”javascript”src=”url”></script>形式导入。</p><p>js文件名命名使用模块名,例如:</p><p>ebwebmail.js。</p><p>如果项目已经提供了公共js脚本,则优先使用公共js脚本中提供的函数。</p><p>所有定义方法的<script>元素定义在<head></head>中或</body>后。</p><p>2.)window.open中name参数的命名</p><p>javascript的window.open方法中有一个name的参数,浏览器约定同样的名字的窗口只能打开一个,如果程序间名字重复将相互冲突。</p><p>如果不限制打开窗口数,可以指定‘’或“”(不是null),否则需要加上模块名,例如ebwebmail_viewmail。</p><p>4.5注释</p><p>函数的功能描述</p><p>/*-------------------------------------------------------------------------------</p><p>*功能:</p><p>functionalitydescription</p><p>*作者:</p><p>robin</p><p>*新建时间:</p><p>2009-1-1</p><p>*----------------------------------------------------------------------------------/</p><p> </p><p>5JSP编程规范</p><p>5.1风格</p><p>服务器端的代码是嵌入到客户端的静态代码中,由于JSP采用的脚本语言是JAVA语言,所以内嵌的JAVA代码必须遵守JAVA编程规范中的规定,为了坚固静态页面的可读性,在风格上应该和HTML及JavaScrpit中的代码的风格保持一致。</p><p>5.2命名</p><p>jsp文件名全部小写,并遵循如下的规范:</p><p>1.)数据/内容显示页</p><p>多个单词用下划线分隔,要求能说明显示内容的信息。</p><p>命名格式:</p><p>功能名词_下划线_动词(list),例如:</p><p>“exam_paper_list.jsp”。</p><p>2.)操作处理页</p><p>增加页命名格式:</p><p>名词_下划线_动词,例如:</p><p>file_add.jsp。</p><p>修改页命名格式:</p><p>名词_下划线_动词,例如:</p><p>file_eidt.jsp。</p><p>删除页命名格式:</p><p>名词_下划线_动词,例如:</p><p>file_delete.jsp。</p><p>查询页命名格式:</p><p>名词_下划线_动词,例如:</p><p>file_search.jsp。</p><p>查看页命名格式:</p><p>名词_下划线_动词,例如:</p><p>file_view.jsp。</p><p>导出页命名格式:</p><p>名词_下划线_动词,例如:</p><p>file_excel_export.jsp。</p><p>导入页命名格式:</p><p>名词_下划线_动词,例如:</p><p>file_excel_import.jsp。</p><p>生成页命名格式:</p><p>名词_下划线_动词,例如:</p><p>exam_paper_genenate.jsp。</p><p>3.)含frame页面</p><p><frameset>中<frame>的name属性命名的格式是①xxx._②xxx_③xxx</p><p>①xxx部分用来标识当前页面隶属于整个系统中的哪一功能模块。</p><p>如:</p><p>属于ebwebmail则被表示为ebwebmail,其它情况依次类推。</p><p>②xxx部分标识当前页面所要完成的功能。</p><p>如:</p><p>完成用户登录的功能则被标识为login,其它情况依次类推。</p><p>③xxx部分用来表示页面在frameset中所处的位置。</p><p>处于浏览器窗口的顶部则标识为top,其它情况依次类推。</p><p>例如:</p><p>ebwebmail_inbox_top.jsp</p><p>5.3编码</p><p>5.3.1整个jsp/jspbean表示层应当尽可能的瘦和简单化</p><p>尽可能的遵守MVC模型中的规定,使JSP和jspbean各尽其职,具体内容包括:</p><p>(1)Jsp编码使用GBK编程工具调整成GBK。</p><p>(2)Jsp页面应写注释,格式请参考4.3。</p><p>(3)尽可能的遵守MVC模型中的规定,使JSP和jspbean各尽其职,jsp层不应该直接访问数据库,JSP页面上绝对不允许出现任何的SQL语句以及JDBC访问对象,只允许访问Action层或业务层,所有SQL语句通过参数传递封装到DAO层中。</p><p>(4)应当避免设计既显示表单又处理结果的页面</p><p>(5)在jsp中避免代码重复。</p><p>把要重复的功能抽象成一个文件,包含在jsp中,使得它能够被重用</p><p>(6)jsp应当永远不要去产生HTML,如果一定要这样做,必须用Action或CustomTag来完成</p><p>5.3.2Jsp常见问题</p><p>(1)登录页面用“帐号”,而不用“用户名”</p><p>(2)弹出的页面大小与内容不匹配</p><p>(3)表格内容多时标签及上面的按钮不要滚动</p><p>(4)修改内容后父页面要刷新</p><p>(5)页面标题要以内容相匹配</p><p>(6)列表有多个状态时要按状态排序,同时不同状态的行以不同颜色区分</p><p>(7)列表中文字比较多时按左对齐,字少时按居中对齐</p><p>(8)列表的列宽布局要以内容多少为准,而不是平均对齐</p><p>(9)增加和修改页面的各个控件要对齐</p><p>(10)树状结构数据较多时默认为收起</p><p>(11)单位信息如果有多级,则显示时将父节点也显示出来,以->连接</p><p>(12)提示信息要让人易懂</p><p>(13)保存需要较长时间时,当单击按钮后,按钮应变为不可操作,避免多次重复操作</p><p>(14)当程序提交后所有的调试信息提示框都应去掉</p><p>(15)翻页时序号应重排</p><p>(16)如果页面只显示一个列表且有分页,则页面不要出现滚动条</p><p>(17)所有可操作的按钮(包括图片按钮)、链接当鼠标移到上面时都应变为手形</p><p>(18)如果数据库字段为null,在页面显示为空,而不是null</p><p>(19)如果页面等待时间较长(超过5秒),包括增、删、改、查等操作,则应加等待提示信息或动画</p><p>(20)必填项在输入或选择框后加红色*号</p><p>(21)有翻页的模块,增加时定位在增加记录的页面,修改时保持原来的翻页页数,删除时如果是最后一页的最后一条记录,则页码减1,其他情况保存原有页码</p><p>(22)对齐数据使用表格对齐,而不是空格</p><p>5.3.3html页面布局一般需要遵循以下格式</p><p>//声明页面编码</p><p><%@pagelanguage="java"pageEncoding="GBK"%></p><p>//声明注释</p><p><%</p><p>/*****************************************************</p><p>*功能描述:</p><p>用户列表信息显示</p><p>*作者:</p><p>张三</p><p>*新建时间:</p><p>2009-11-12</p><p>*修改时间:</p><p>2009-11-15</p><p>*修改原因:</p><p>增加姓名列</p><p>*****************************************************/</p><p>%></p><p>//声明页面不采用缓存</p><p><%</p><p>response.setHeader("Pragma","No-cache");</p><p>response.setHeader("Cache-Control","no-cache");</p><p>response.setDateHeader("Expires",0);</p><p>%></p><p>//导入包</p><p><%@pageimport="mon.*"%></p><p>//声明所有的Biz对象或jspbean对象</p><p><%</p><p>ApplicationContextctx=WebApplicationContextUtils.getWebApplicationContext(this.getServletContext());</p><p>UserBizuserBiz=(UserBiz)ctx.getBean("userBiz");</p><p>%></p><p>//html代码</p><p><html></p><p><head></p><p> <metahttp-equiv="Content-Type"content="text/html;charset=utf-8"></p><p> <title>sometitle

 

 

 //somejavascript

 

5.3.4Jsp表现层尽量struts1标签化

尽可能使用Struts标签做.

(1)Jsp展现视图尽量不要出现Java代码.多使用Struts标签

(2)增加页面重用.提出公共Jsp.供其它页面引入.

(3)样式。

最好提出独立CSS

(4)编辑工具显示Jsp页面尽量不要有Error

(5)CVS提交时注明修改原因

5.4注释

(1)关于页面功能以及作者的信息的注释

/*****************************************************

*功能描述:

用户列表信息显示

*作者:

张三

*新建时间:

2009-11-12

*修改时间:

2009-11-15

*修改原因:

增加姓名列

*****************************************************/

(2)代码块功能的注释

(3)应当使用隐藏的注释来阻止输出的HTML过大。

(4)每个jsp文件中都应当使用一个错误页面来处理不能够从中恢复的异常。

 

6JAVA编程规范

6.1格式

6.1.1.缩进

所有的缩进皆为4个空格。

对应的括号通常在同一列的位置上。

例如:

voidfoo()

{

while(bar>0)

{

Logger.debug();

bar--;

}

if(oatmeal==tasty)

{

Logger.debug("Oatmealisgoodandgoodforyou");

}

elseif(oatmeal==yak)

{

Logger.debug("Oatmealtasteslikesawdust");

}

else

{

Logger.debug("tellmepleezewhatizdis'oatmeal'");

}

switch(suckFactor)

{

case1:

Logger.debug("Thissucks");

break;

case2:

Logger.debug("Thisreallysucks");

break;

default:

Logger.debug("whatever");

break;

}

}

1).所有的缩进是由"Space(空格)键"形成的,而不是"Tab键"。

2).所有的if、while和for语句中的"状态"内容必须用括号括起来,就算只有一个状态。

if(superHero==theTick)

{

Logger.debug("Spoon!

");

}

6.1.2间隔

1).所有的标识符都必须被空白字符包围。

inttheTick=5;

if(theTick==5)

这么做唯一可能成为麻烦的是复杂的布尔分析影响了清晰度,例:

if((hero==theTick)&&((sidekick==arthur)||(sidekick==speak)))

不如这样:

booleanisTickSidekick=((sidekick==arthur)||(sidekick==speak));

if((hero==theTick)&&isTickSidekick)

{

}

2).然而也有一些例外的情况,见下表:

例外情况

原由

正确示例

错误示例

方法名

习惯写法是在所有方法名之后直接跟上一个左括号

foo(i);

start();

Foo(I);

Start();

数组

习惯写法是在所有数组名之后直接跟上一个左方括号

args[0];

tens[I];

args[0];

tens[i];

自加、自减运算符

习惯写法是在所有一元运算符前面或后面直接加上操作数

++count;i--;

++count;i--;

类型运算符

习惯写法是所有造型都不加空格

(MyClass)v.get(3);

(MyClass)v.get(3);

(MyClass)v.get(3);

6.1.3空行

应该时不时的在各方法之间加入一些空格行来分割大段的代码;

还应该在方法与方法之间加入一两行的空格行。

6.1.4类成员的摆放顺序

classOrder

{

1.finalattributes

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

当前位置:首页 > 小学教育 > 其它课程

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

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