JAVA开发规范整理版Word文档格式.docx
- 文档编号:21023366
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:25
- 大小:582.67KB
JAVA开发规范整理版Word文档格式.docx
《JAVA开发规范整理版Word文档格式.docx》由会员分享,可在线阅读,更多相关《JAVA开发规范整理版Word文档格式.docx(25页珍藏版)》请在冰豆网上搜索。
这个功能在PL/SQL6.0及以后版本中才提供。
具体位置为:
Edit菜单à
PL/SQLbeautifier菜单。
行宽在WORKSHOP中的设置方法为:
windows菜单à
Preferences菜单à
JAVAà
codestyleà
formatter,选择一个格式文件,点击“SHOW”按钮,修改红色框中的地方的值即可。
2.5间隔
类、方法及功能块间等应以空行相隔,以增加可读性,但不得有无规则的大片空行。
操作符两端应当各空一个字符以增加可读性。
相应独立的功能模块之间可使用注释行间隔,并标明相应内容。
设置方法:
formatter,选择一个格式文件,点击“SHOW”按钮,修改红色框中的两个页面中的值即可。
2.6对齐
关系密切的行应对齐,对齐包括类型、修饰、名称、参数等各部分对齐。
连续赋值时当对齐操作符。
当方法参数过多时当在每个参数后(逗号后)换行并对齐。
当控制或循环中的条件比较长时当换行(操作符前)、对齐并注释各条件。
变量定义最好通过添加空格形成对齐,同一类型的变量应放在一起。
formatter,选择一个格式文件,点击“SHOW”按钮。
修改各变量的对齐在红色框中的地方。
参数过长时对齐设置在:
2.7括号
{}中的语句应该单独作为一行,左括号"
{"
当紧跟其语句后,右括号"
}"
永远单独作为一行且与其匹配行对齐。
不要在程序中出现不必要的括号,但有时为了增加可读性和便于理解,当用括号限定相应项。
左括号是否换行等随个人习惯而定,若换行则当与其前导语句首字符对齐。
红色框中的TAB页可设置括号的对齐。
第3章注释
3.1基本原则
Ø
注释应该增加代码的清晰度。
代码注释的目的是要使代码更易于被其他开发人员理解。
如果你的程序不值得注释,那么它很可能也不值得运行。
避免使用装饰性内容。
保持注释的简洁。
注释信息不仅要包括代码的功能,还应给出原因。
不要为注释而注释。
除变量定义等较短语句的注释可用行尾注释外,其他注释当避免使用行尾注释。
对类、方法、变量等的注释需要符合JavaDoc规范,对每个类、方法都应详细说明其功能、条件、参数等,并使用良好的HTML标记格式化注释,以使生成的JavaDoc易阅读和理解。
注释参考表
3.2类、接口注释
在类、接口定义之前当对其进行注释,包括类、接口的目的、作用、功能、继承于何种父类,实现的接口、实现的算法、使用方法、示例程序等。
3.3方法注释
依据标准JavaDoc规范对方法进行注释,以明确该方法功能、作用、各参数含义以及返回值等。
参数注释时当注明其取值范围等返回值当注释出失败、错误、异常时的返回情况。
异常当注释出什么情况、什么时候、什么条件下会引发什么样的异常
3.4变量注释
变量注释主要是明确变量的作用;
什么情况下可用,什么情况下不可用;
不同情况下值取值有什么不同;
如果值可枚举的话各个值的说明;
如果是新增的变量,可能的话还需要说明是由谁新增的,新增时间以及新增原因。
类变量注释示例:
类常量注释示例:
函数内变量注释示例:
3.5代码块注释
代码块注释主要是说明代码块的功能;
实现方法;
注意细节等。
3.6修改注释
程序修改时,首先在类中添加修改注释,包括修改人,修改时间,修改原因以及修改内容,如图:
对于需要被修改或移除的代码,在之前添加移除人,移除时间,移除开始分隔符及移除结束分隔符。
对于新增加的代码代码,格式如下:
如果修改的内容位于函数体内且变动比较小时,修改原函数的描述,注意事项,参数,返回值,异常等信息,并添加修改人修改时间,如下:
如果函数功能变化很大,则移除原方法,新增一个方法来实现代码修改。
3.7配置文件注释
为了保存配置文件在WEBLOGIC下运行正常,所有的配置文件只能选择不注释或者是用英文注释。
3.8JS注释
JS中注释可以有,但和方法注释等一样,要求准确,完善。
第4章命名
4.1基本原则
规范的命名能使程序更易阅读,从而更易于理解。
它们也可以提供一些标识功能方面的信息,有助于更好的理解代码和应用。
使用可以准确说明变量、字段、类、接口、包等的完整的英文描述符。
例如,采用类似firstName,listAllUsers或CorporateCustomer这样的名字,尽量不使用汉语拼音及不相关单词命名,虽然Java支持Unicode命名,但本规范规定对包、类、接口、方法、变量、字段等不得使用汉字等进行命名。
采用该领域的术语。
如果用户称他们的“客户”(clients)为“顾客”(customers),那么就采用术语Customer来命名这个类,而不用Client。
采用大小写混合,提高名字的可读性。
一般应该采用小写字母,但是类和接口的名字的首字母,以及任何中间单词的首字母应该大写。
包名全部小写。
尽量少用缩写,但如果一定要使用,当使用公共缩写和习惯缩写等,如实现(implement)可缩写成impl,经理(manager)可缩写成mgr等,具体参看附录之《常用缩写简表》,严禁滥用缩写。
避免使用长名字(最好不超过25个字母)。
避免使用相似或者仅在大小写上有区别的名字。
避免使用数字,但可用2代替to,用4代替for等,如:
go2Jsp。
4.2文件、包
文件名当与其类严格相同,所有单词首字母大写。
包名一般以项目或模块名命名,少用缩写和长名,一律小写。
基本包:
com.hjh所有包、文件都从属于此包。
包名按如下规则组成:
[基本包].[项目名].[模块名].[子模块名]...如:
Com.hjh.yys.hyfx.dao
目录参考结构如下:
目录说明
ProjectName项目目录,当和项目名一致
/web输出目录
/index.jsp首页文件
/web-inf
/classes类构建目录
/lib资源文件
/struts页面流程配置文件
/dwr.xmlDWR配置文件
/web.xml应用程序配置文件
/其它文件CSS,JS,图片,及JSP文件
/src源码目录
/java包和文件
/config配置目录
/spring配置文件信息
/hbm.xmlhibernate配置信息
/property文件
/docs文档目录
不得将类直接定义在基本包下,所有项目中的类、接口等都当定义在各自的项目和模块包中。
4.3类、接口
所有单词首字母大写。
使用能确切反应该类、接口含义、功能等的词。
一般采用名词。
接口可带I前缀或able、ible、er等后缀。
推荐接口命名为:
I前缀+ 模块名 + 业务名称或简称 + Service后缀。
实现该接口的类文件名为:
模块名 + 业务名称或简称 + ServiceImp后缀。
4.4方法
方法的命名应采用完整的英文描述符,大小写混合使用:
所有中间单词的第一个字母大写。
方法名称的第一个单词常常采用一个有强烈动作色彩的动词。
取值类使用get前缀,设值类使用set前缀,判断类使用is(has)前缀,保存操作类使用save前缀,删除操作使用delete前缀,查询数据采用query前缀。
例:
getName(),setSarry(),isLogon()方法。
参数建议顺序:
(被操作者,操作内容,操作标志,其他)
4.5变量
变量名当能反映变量的作用,便于其它程序员理解程序,而不是把程序搞的更复杂。
常量采用完整的英文大写单词,在词与词之间用下划线连接,如:
DEFAULT_VALUE。
变量和参数对不易清楚识别出该变量类型的变量应使用类型缩写作其前缀,如字符串使用strXXX,boolean使用isXXX,hasXXX等等。
除第一各个单词外其余单词首字母大写。
对私有实例变量可使用_前缀,但在其存取方法中则应该将其前缀去掉。
组件/部件应采用完整的英文描述符命名组件(接口部件),遵循匈牙利命名法则如:
btnOK,lblName。
集合一个集合,例如数组和矢量,应采用复数命名来表示队列中存放的对象类型。
命名应采用完整的英文描述符,名字中所有非开头的单词的第一个字母应大写,适当使用集合缩写前缀。
如:
VectorvProducts=newVector();
//产品向量ArrayaryUsers=newArray();
//用户列表
神秘的数我们在程序里经常会用到一些量,它是有特定的含义的。
例如,现在我们写一个薪金统计程序,公司员工有50人,我们在程序里就会用50这个数去进行各种各样的运算。
在这里,50就是"
神秘的数"
。
当别的程序员在程序里看到50这个数,将很难知道它的含义,造成理解上的困难。
在程序里出现"
会降低程序的可读性、可维护性和可扩展性,故规定不得出现此类"
避免的方法是把神秘的数定义为一个常量。
注意这个常量的命名应该能表达该数的意义,并且应该全部大写,以与对应于变量的标识符区别开来。
例如上面50这个数,我们可以定义为一个名为NUM_OF_EMPLOYEES的常量来代替。
这样,别的程序员在读程序的时候就可以容易理解了。
其他命名时应使用复数来表示它们代表多值。
orderItems。
4.6异常
异常类名由表示该异常类型的单词和Exception组成,如ActionException。
异常实例一般使用e、ex等,在多个异常时使用该异常名或简写加E,Ex等组成,如:
SQLEx,ActionEx
4.7命名约定表
第5章声明
5.1基本原则
声明的基本原则是遵守Java语言规范,并遵从习惯用法。
5.2包
在导入包时当完全限制代码所使用的类的名字,尽量少用通配符的方式,但导入一些通用包,或用到一个包下大部分类时,则可是使用通配符方式,如:
importorg.skyinn.quasar.services.Service;
importjava.util.*;
在WORKSHOP中导入包,可以通过CTRL+SHIFT+O来实现
5.3类、接口
类、接口定义语法规范:
[可见性][('
abstract'
|'
final'
)][Class|Interface]class_name
[('
extends'
implements'
)][父类或接口名]{
}
publicclassLoginActionextendsBaseActionimplemnetsActionListener{
5.4方法
良好的程序设计应该尽可能减小类与类之间耦合,所遵循的经验法则是:
尽量限制成员函数的可见性。
如果成员函数没必要公有(public),就定义为保护(protected);
没必要保护(protected),就定义为私有(private)。
方法定义语法规范:
)]['
synchronized'
][返回值类型]method_name(参数列表)[('
throws'
)][异常列表]{
//功能模块
}如:
publicListlistAllUsers()throwsDAOException{
若有toString(),equals(),hashCode(),colone()等重载自Object的方法,应将其放在类的最后。
声明顺序:
构造方法静态公共方法静态私有方法受保护方法私有方法继承自Object的方法。
5.5变量
字段定义语法规范:
[(‘public’|’private’|’protected’)]
[(‘final’|’volatile’)][‘static’][‘transient’] data_typefield_name[‘=’expression]‘;
’
若没有足够理由,不要把实例或类变量声明为公有。
公共和保护的可见性应当尽量避免,所有的字段都建议置为私有,由获取和设置成员函数(Getter、Setter)访问。
不允许“隐藏”字段,即给局部变量所取的名字,不可与另一个更大范围内定义的字段的名\字相同(或相似)。
例如,如果把一个字段叫做firstName,就不要再生成一个局部变量叫做firstName,或者任何易混肴的名字,如fistName。
数组声明时当将"
[]"
跟再类型后,而不时字段名后,如:
Integer[]ai=newInteger
(2);
//一个整数对象数组,用于...
Integeraj[]=newInteger(3);
//不要用这种数组声明方式
一行代码只声明一个变量,仅将一个变量用于一件事。
声明顺序:
常量类变量实例变量 公有字段受保护字段私有字段
可以将私有变量声明在类或接口的最后。
注意受保护变量、私有变量、“包”变量间的区别。
第6章使用
6.1文件、包
按照4.2中的目录结构来创建文件。
包统一路径为:
com.hjh.[模块名][子模快名][功能]来划分。
公司现在的功能分层方法一般为:
✧FORM层,在这层中主要包括用于页面显示及处理的字段及相应的GET,SET方法。
如果页面可对列表进行编辑,则可添加从前台页面的列表转FORM中LIST的方法。
FORM层实现时要注意的几点:
非JAVA基本数据类型的字段,在GET方法中必须进行初始化。
用于接收从页面传入的查询条件的字段名,最好以query作前缀。
不要在一个FORM中包含多个相同意义的字段,这在使用中会引发问题,额外增加程序的复杂度。
字段的使用不要超过字段定义时的功能。
比如:
queryNsrsbh在声明时的它的功能为获取页面录入的查询条件,但很多人用着用着就把它作为当前纳税人使用。
✧ACTION层,在这层中我们主要处理两件事,根据页面动作调用相应SERVICE中的方法;
指定返回页面。
一般情况下,异常需要在此进行处理。
ACTION层实现时要注意的几点:
不要把SERVICE中应该执行的代码写在ACTION中。
也不要把FORM中应该执行的代码写在ACTION中。
在保存,删除等操作之后,如果成功记得进行成功提示,如果有错误则由ERROR.JSP来处理。
✧SERVICE接口及实现。
这里主要实现业务逻辑及相关功能。
开发时要注意几点:
哪些方法需要在接口中定义,哪些方法应该设置为PRIVATE,应该谨慎处理。
把重复的功能实现定义为私有函数,比如页面初始化。
在功能实现时请尽可能的减少数据库的调用次数,尽量多用缓存,尤其是在循环和递归中执行数据库操作的行为应该尽量避免。
✧DAO及实现
单表及简单的表操作,可以使用HIBERNATE来实现,以提高工作效率。
复杂SQL使用JDBC来实现
SQL语句书写时请参考第8章SQL语句,提高SQL语句的执行效率。
6.2类与接口
6.2.1基本原则
类的划分粒度,不可太大,造成过于庞大的单个类,也不可太细,从而使类的继承太深。
一般而言,一个类只做一件事;
另一个原则是根据每个类的职责进行划分,比如用User来存放用户信息,而用UserDAO来对用户信息进行数据访问操作(比如存取数据库),用UserBroker来封装用户信息的业务操作等等。
多使用设计模式,随时重构。
多个类中使用相同方法时将其方法提到一个接口中或使用抽象类,尽量提高重用度。
将不希望再被继承的类声明成final,例如某些实用类,但不要滥用final,否则会对系统的
可扩展性造成影响。
将不希望被实例化的类的缺省构造方法声明成private。
6.2.2抽象类与接口
一般而言:
接口定义行为,而抽象类定义属性和公有行为,注意两者间的取舍,在设计中,可由接口定义公用的行为,由一个抽象类来实现其部分或全部方法,以给子类提供统一的行为定义,可参考Java集合等实现。
多使用接口,尽量做到面向接口的设计,以提高系统的可扩展性。
6.2.3继承与组合
尽量使用组合来代替继承,一则可以使类的层次不至于过深,而且会使类与类,包与包之间的耦合度更小,更具可扩展性。
6.2.4构造函数和静态工厂方法
当需要使用多个构造函数创建类时,建议使用静态工厂方法替代这些构造方法(参考
《EffictiveJava》Item1),例如:
参看String,Boolean的实现等:
String.valueOf(Longl),Boolean.valueOf(String)...
6.2.5toString(),equals(),hashCode()...
每个类都应该重载toString()方法,以使该类能输出必要和有用的信息等。
若一个类需要重载equals()方法,则必须同时重载hashCode()方法实现方式参考
《EffictiveJava》Item7,Item8
6.2.6SingletonClass
单例类使用如下方式声明,并将其缺省构造方法声明成private:
单例类若需要实现序列化,则必须提供readResolve()方法,以使反序列化出来的类仍然是唯一的实例,参加《EffictiveJava》Item57。
6.3方法
6.3.1基本原则
一个方法只完成一项功能,在定义系统的公用接口方法外的方法应尽可能的缩小其可见性。
避免用一个类实例去访问其静态变量和方法。
避免在一个较长的方法里提供多个出口:
//不要使用这钟方式,当处理程序段很长时将很难找到出口点
if(condition){
returnA;
}else{
returnB;
//建议使用如下方式
Stringresult=null;
result=A;
result=B;
returnresult;
6.3.2参数
避免过多的参数列表,尽量控制在5个以内,若需要传递多个参数时,当使用一个容纳这些参数的对象进行传递,以提高程序的可读性和可扩展性。
参数类型和返回值尽量接口化,以屏蔽具体的实现细节,提高系统的可扩展性,例如:
publicvoidjoinGroup(ListuserList){}
publicListlistAllUsers(){}
6.3.3返回值
返回值需要注意二点:
一个是方法说明中的返回值必须明确并准确,并与方法的实现返回值匹配。
有一种比较常见的错误如下:
这个方法,它的设计初衷是当数据库中存在相应的记录时返回BO对象,那不存在时应当为空;
但现在不论有没有从数据库中找到相应记录,都会从返回一个不为空的BO对象。
当调用者以判断返回是否为NULL来判断数据库中是否有相应记录就会引发问题。
6.4变量
JAVA开发调试或实现应用中出现最多的一个错误估计就是NULLPOINTERERROR(空指针问题)了,所以在使用变量时要额外注意。
6.4.1基本原则
变量在声明之后必须进行初始化。
如果是变量是非基本类型的实例,则在使用前必须进行是否为NULL检测。
6.4.2变量验证
如果为字符串,在验证之前最好先Trim一下,然后判断是否为NULL及是否等于””。
在某些特殊情况下,如果这个字符串其值有特定的含义,比如代表的是年份,则还需要验证是否为四位的数字。
如果为数组或集合,则在判断是否为NULL之外一般还需要判断数组的长度是否大于0。
6.5表达式与语句
6.5.1基本原则
表达式和语句当清晰、简洁,易于阅读和理解,避免使用晦涩难懂的语句。
每行至多包含一条执行语句,过长当换行。
避免在构造方法中执行大量耗时的初始化工作,应当将这中工作延迟到被使用时再创建相应资源,如果不可避免,则当使用对象池和Cache等技术提高系统性能。
避免在一个语句中给多个变量赋相同的值。
它很难读懂。
不要使用内嵌(embedded)赋值运算符试图提高运行时的效率,这是编译器的工作。
尽量在声明局部变量的同时初始化。
唯一不这么做的理由是变量的初始值依赖于某些先前发生的计算。
一般而言,在含有多种运算符的表达式中使用圆括号来避免运算符优先级问题,是个好方法。
即使运算符的优先级对你而言可能很清楚,但对其他人未必如此。
你不能假设别的程序员和你一样清楚运算符的优先级。
不要为了表现编程技巧而过分使用技巧,简单就
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 开发 规范 整理