程序编码规范java.docx
- 文档编号:7378323
- 上传时间:2023-01-23
- 格式:DOCX
- 页数:9
- 大小:21.59KB
程序编码规范java.docx
《程序编码规范java.docx》由会员分享,可在线阅读,更多相关《程序编码规范java.docx(9页珍藏版)》请在冰豆网上搜索。
程序编码规范java
程序编码规范
编写:
×××
审核:
×××
××××年××月修改
一、引言
编码规范对于程序员而言尤为重要,有以下几个原因:
1、一个软件的生命周期中,80%的花费在于维护。
2、几乎没有任何一个软件,在其整个生命周期中,均由最初的开发人员来维护。
3、编码规范可以改善软件的可读性,可以让程序员尽快而彻底地理解新的代码。
4、如果你将源码作为产品发布,就需要确任它是否被很好的打包并且清晰无误,一如已构建的其它任何产品
为了执行规范,每个软件开发人员必须一致遵守编码规范中的代码规范,代码规范提高软件代码的可读性,使得开发人员快速和彻底的理解新代码.。
好的代码风格不仅会提高可读性,而且会使代码更健壮,更为重要的是在修改时不容易出错。
现代软件开发中,维护工作会占用80%的时间,而且开发者和维护者通常不是同一个程序员。
这意味着程序员经常要阅读和修改别人开发的程序,别人也同样可能需要阅读和修改你开发的程序,所以制定一套完善的编码规范非常重要。
定义本规范的目的是使项目中所有的文档及程序编码在写作风格上具有一致性,增加可读性,减少项目组中因为换人带来的损失,从而使程序具有良好的可读性。
二、命名规范
包(Package)的命名
包(Packages):
一个唯一包名的前缀应全部为小写的ASCII字母,并且是一个顶级域名,通常为com、edu、gov、mil、net、org等。
包名的后续部分可根据各个不同机构内部的命名规范来定义,这类命名规范可以由特定的目录名来区分部门(department)、项目(project)、机器(machine)和注册名(loginnames)。
●核心程序部分:
系统管理部分:
应用维护部分:
项目计划管理部分:
采购管理部分:
财务管理部分:
.finance
监测评价部分:
如果在开发过程中还有其他情况没有涵盖到,可以按照上述规则进行扩展。
Class的命名
Class的名字必须由一个大写字母开头其他字母为小写的单词构成。
类名要用完整的单词,避免使用缩写词(除非该缩写词被更广泛使用,像URL,HTML)。
ActionForm类的命名:
以有意义的拼音缩写开头后加ActionForm
Action类的命名:
以有意义的拼音缩写开头后加Action
Class变量的命名
变量名应选用易于记忆、简短富于描述并能够指出其用途的单词。
单词不应以下划线或美元符号开头,除一次性临时变量外尽量避免单个字符的变量名。
除了变量名外,所有实例,包括类、类常量均采用大小写混合的方式,第一个单词的首字母小写,其后单词的首字母大写。
charc(c、d、e常用于表示字符型)
intI(i、j、k、m、n常用于表示整型)
floatmyWidth;
实例变量(InstanceVariables)
大小写规则和变量名相似,但前面需要一个下划线int_employeeId;
String_name;
Customer_customer;
常量(Constants)类常量和ANSI常量的声明,应该全部大写,单词间用下划线隔开。
(尽量避免ANSI常量,容易引起错误)staticfinalintMIN_WIDTH=4;
staticfinalintMAX_WIDTH=999;
staticfinalintGET_THE_CPU=1;
除了以下几个特例之外,命名时应始终采用完整的英文描述符。
此外,一般应采用小写字母,但类名、接口名以及任何非初始单词的第一个字母要大写。
1、尽量使用完整的英文描述符
2、采用适用于相关领域的术语
3、采用大小写混合使名字可读
4、尽量少用缩写,但如果用了,要明智地使用,且在整个工程中统一
5、避免使用长的名字(小于15个字母是个好主意)
6、避免使用类似的名字,或者仅仅是大小写不同的名字
7、避免使用下划线(除表态常量等)
接口的命名
书写规则与类名相似,如interfaceRasterDelegate;interfaceStoring;
方法(Methods):
方法名是一个动词,采用大小写混合的方式,第一个单词的首字母小写,其后单词的首字母大写,例如:
run();
runFast();
getBackground();
参数的命名
参数的命名必须与变量的命名规范一致。
数组的命名
数组应该用下面的方式来命名:
byte[]buffer;
而不是:
bytebuffer[];
方法的参数
使用有意义的参数来命名,名字尽量和将要赋值的字段一致。
例如:
SetCounter(intsize){
=size;
}
三注释规范
一般情况下程序有两类注释:
实现注释(implementationcomments)和文档注释(documentcomments)。
实现注释是那些在C++中见过的,使用/*...*/和.*/界定。
文档注释可以通过javadoc工具转换成HTML文件。
实现注释用来注释代码或者实现细节。
文档注释从实现自由(implementation-free)的角度描述代码的规范。
它可以使手头没有源码的开发人员读懂程序。
注释是用来对代码进行的,并提供代码自身没有提供的附加信息。
注释要包含有助于阅读和理解程序的相关信息。
例如,相应的包如何被建立或位于哪个目录下之类的信息不应包括在注释中。
程序可以有4种实现注释的风格:
块(block)、单行(single-line)、尾端(trailing)和行末(end-of-line)。
块注释(BlockComments)
块注释通常是对文件、方法、数据结构和算法等提供描述,应置于每个文件的开始处或每个方法之前。
块注释也可以用于其他地方,如方法的内部。
在功能和方法内部的块注释应该和它所描述的代码具有一样的缩进格式。
块注释之首应该有一个空行,用于把块注释和代码分割开来,比如:
/*
*在这里写块注释
*/
单行注释(Single-LineComments)
单行注释之前也应该有一个空行。
若为可以显示在一行内短注释,要与其后的代码具有一样的缩进层级。
如果一个注释不能在一行内写完,就该采用块注释(参见"块注释")的方式。
以下是一个Java代码中单行注释的例子:
if(condition){
/*判断条件*/
...
}
尾端注释(TrailingComments)
极短的注释可以与它们所要描述的代码位于同一行,但是应该有足够的空白将代码和注释分开。
若有多个短注释出现在大段代码中,它们应该具有相同的缩进。
以下是一个Java代码中尾端注释的例子:
if(a==2){
returnTRUE;/*specialcase*/
}else{
returnisPrime(a);/*worksonlyforodda*/
}
行末注释(End-Of-LineComments)
利用注释界定符"...
}
else{
returnfalse;}
.
ava)文件都必须遵守如下的样式规则
版权信息
版权信息必须在java文件的开头,比如:
/**版权所有?
****年-****年×××××科技有限公司,
*保留所有权利。
*/
其他不需要出现在javadoc的信息也可以包含在这里。
Package/Imports
package行要在import行之前,import中标准的包名要在本地的包名之前,而且按照字母顺序排列。
如果import行中包含了同一个包中的不同子目录,则应该用*来处理。
package……;
import.*;
import
这里.*使用来代替InputStreamandOutputStream的。
Class
类的注释一般是用来解释类功能的,需要按照如下格式编写:
/**
*
类名:
Jpc
*
描述:
Jpc服务的用户接口类,调用了JpcService类的实现。
*
*
版权声明:
Copyright(c)2003-2004,
*
*
*@author
*@version1.5.6
*/
ClassFields
类的成员变量必须通过注释说明其含义,不管成员变量是public、protected还是private的都要说明。
存取方法
若类的存取方法只是用于对类的变量赋值、取值的话,在类的成员变量有注释的情况下,类变量的存取方法可以没有注释。
/**
*功能说明:
…
*@paramopcData要设置的Opc数据
*@returntrue成功false失败
*@throwsServiceUnavailableException服务不可用异常
*/
publicstaticbooleansetDataToOpc(OpcDataopcData)throwsServiceUnavailableException{
returntrue;
}
publicint[]getPackets(Strings){returncopyArray(packets,offset);}
publicint[]getBytes(){returncopyArray(bytes,offset);}
publicint[]getPackets(){returnpackets;}
publicvoidsetPackets(int[]packets){=packets;}
构造函数
构造函数,要用递增的方式书写(参数多的写在后面),这样可以使方法和参数更易读。
main方法
如果已经定义了main(String[])方法,那么它就应该写在类的底部。
换行(WrappingLines)
当一个表达式无法容纳在一行内时,可以依据如下一般规则断开:
●在一个逗号后面断开
●在一个操作符前面断开
●宁可选择较高级别(higher-level)的断开,而非较低级别(lower-level)的断开
●新的一行应该与上一行同一级别表达式的开头处对齐-如果以上规则导致你的代码混乱或者使代码都堆挤在右边,那就代之以缩进8个空格。
以下是断开方法调用的一些例子:
someMethod(longExpression1,longExpression2,longExpression3,
longExpression4,longExpression5);
var=someMethod1(longExpression1,
someMethod2(longExpression2,
longExpression3));
以下是两个断开算术表达式的例子。
前者更好,因为断开处位于括号表达式的外边,这是个较高级别的断开。
longName1=longName2*(longName3+longName4-longName5)
+4*longname6;.
}
.
}
if语句的换行通常使用8个空格的规则,因为常规缩进(4个空格)会使语句体看起来比较费劲。
比如:
1.ml”,
2.Spirng的配置文件必须放在WEB-INF/目录下。
3.产品自定义的sping配置文件的命名应该以“applicationContext”+产品的名称+某块名称+“.xml”,
八、日志规范
采用log4j作为日志模块的标准框架,版本采用1.2.8,log4j的配置文件为WEB-INF/classes/,配置方式采用log4j的标准配置文件方式,如:
#ForJBoss:
Avoidtosetuplog4joutside$JBOSS_HOME/server/default/deploy/
#Forallotherservers:
CommentouttheLog4Jlistenerintoo
#=INFO,logfile,console
=INFO,console
#=ERROR
Keepthreebackupfiles
Patterntooutput:
datepriority[category]-
%p[%c]-<%m>%n
%p[%c]-<%m>%n
log4j的参数配置参考log4j官方文档。
九、设计及技巧建议
系统主要的层次是表现层、业务层和持久层,整体应采用taglib+struts+spring+hibernate架构,各层:
表现层
表现层主要是用taglib来实现的,数据来源是业务层,不要直接使用持久层获取数据,查询数据需要组装查询VO(***QueryVO)
按模块来命名包名例如每个模块内的包分别是:
actions,按功能分别存放Action
forms,存放各个功能分别用到的formbean
models存放各种类型的list所用到的DataModel
业务层
业务层为表现层提供接口(用统一的工厂来管理这些接口),并且对常用数据做缓存。
总的业务层包名是:
com..business,按模块分别命名也存放接口和实现
持久层
持久层主要功能是为业务层提供数据,从数据库获取数据,也要承担少部分的业务逻辑,并且对实体和VO之间进行转换(不要把实体带到业务层甚至表现层);尽量不直接使用各种数据库的功能,例如存储过程、约束等,用代码和配置文件来完成这些功能,防止跨数据库出现兼容问题
持久层包名是:
com.××××××.,下面是Dao(存放Dao接口和实现),entity(按不同功能分别存放要用到的数据库实体和影射文件),services(持久层服务接口和实现,以及管理这些接口的工厂),vo(根据业务组装VO,VO要尽量简单,例如针对有父子关系的实体可以只保存父类实体的id)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序 编码 规范 java