java代码规范详细版文档格式.docx
《java代码规范详细版文档格式.docx》由会员分享,可在线阅读,更多相关《java代码规范详细版文档格式.docx(14页珍藏版)》请在冰豆网上搜索。
1.1.4骆驼法则
Java中,除了包名,静态常量等特殊情况,大部分情况下标识符使用骆驼法则,即单词之间不使用特殊符号分割,而是通过首字母大写来分割。
比如:
supplierName,addNewContract,而不是supplier_name,add_new_contract。
1.1.5英文vs拼音
尽量使用通俗易懂的英文单词,如果不会可以向队友求助,实在不行则使用汉语拼音,避免拼音与英文混用。
比如表示归档,用archive比较好,用pigeonhole则不好,用guiDang尚可接受。
1.2包名
使用小写字母如com.amerisia.ebills,不要com.amerisia.Ebills
单词间不要用字符隔开,比如com.amerisia.ebills,而不要com.amerisia.ebills_util
1.3类名
1.3.1首字母大写
类名要首字母大写,比如LCIssueInfoManagerEJB,LCIssueAction;
不要lcIssueInfoManagerEJB,lcIssueAction.
1.3.2后缀
类名往往用不同的后缀表达额外的意思,如下表:
后缀名
意义
举例
EJB
表示这个类为EJB类
LCIssueInfoManagerEJB
Service
表明这个类是个服务类,里面包含了给其他类提同业务服务的方法
PaymentOrderService
Impl
这个类是一个实现类,而不是接口
PaymentOrderServiceImpl
Inter
这个类是一个接口
LifeCycleInter
Dao
这个类封装了数据访问方法
PaymentOrderDao
Action
直接处理页面请求,管理页面逻辑了类
UpdateOrderListAction
Listener
响应某种事件的类
PaymentSuccessListener
Event
这个类代表了某种事件
PaymentSuccessEvent
Servlet
一个Servlet
PaymentCallbackServlet
Factory
生成某种对象工厂的类
PaymentOrderFactory
Adapter
用来连接某种以前不被支持的对象的类
DatabaseLogAdapter
Job
某种按时间运行的任务
PaymentOrderCancelJob
Wrapper
这是一个包装类,为了给某个类提供没有的能力
SelectableOrderListWrapper
Bean
这是一个POJO
MenuStateBean
1.4方法名
首字母小写,如addOrder()不要AddOrder()
动词在前,如addOrder(),不要orderAdd()
查询方法要查询的内容在前,条件在后。
如getXxByXx()
动词前缀往往表达特定的含义,如下表:
前缀名
create
创建
createOrder()
delete
删除
deleteOrder()
add
创建,暗示新创建的对象属于某个集合
addPaidOrder()
remove
removeOrder()
init或则initialize
初始化,暗示会做些诸如获取资源等特殊动作
initializeObjectPool
destroy
销毁,暗示会做些诸如释放资源的特殊动作
destroyObjectPool
open
打开
openConnection()
close
关闭
closeConnection()<
read
读取
readUserName()
write
写入
writeUserName()
get
获得
getName()
set
设置
setName()
prepare
准备
prepareOrderList()
copy
复制
copyCustomerList()
modity
修改
modifyActualTotalAmount()
calculate
数值计算
calculateCommission()
do
执行某个过程或流程
doOrderCancelJob()
dispatch
判断程序流程转向
dispatchUserRequest()
start
开始
startOrderProcessing()
stop
结束
stopOrderProcessing()
send
发送某个消息或事件
sendOrderPaidMessage()
receive
接受消息或时间
receiveOrderPaidMessgae()
respond
响应用户动作
responseOrderListItemClicked()
find
查找对象
findNewSupplier()
update
更新对象
updateCommission()
find方法在业务层尽量表达业务含义,比如findUnsettledOrders(),查询未结算订单,而不要findOrdersByStatus()。
数据访问层,find,update等方法可以表达要执行的sql,比如findByStatusAndSupplierIdOrderByName(Status.PAID,345)
1.5域(field)名
1.5.1静态常量
全大写用下划线分割,如
publicstaticfindStringORDER_PAID_EVENT=“ORDER_PAID_EVENT”;
1.5.2枚举
全大写,用下划线分割,如
publicenumEvents{
ORDER_PAID,
ORDER_CREATED
}
1.5.3其他
首字母小写,骆驼法则,如:
publicStringorderName;
1.6局部变量名
参数和局部变量名首字母小写,骆驼法则。
尽量不要和域冲突,尽量表达这个变量在方法中的意义。
2.代码格式
使用tab缩进源代码。
使用alt+shift+f(eclipse)来格式化代码,注:
格式化代码后还需手动来调下。
2.1源文件编码
源文件使用utf-8编码,结尾用unixn分格。
2.2行宽
行宽度不要超过80。
Eclipse标准
2.3包的导入
删除不用的导入,尽量不要使用整个包的导入。
在eclipse下经常使用快捷键ctrl+shift+o修正导入。
2.4类格式
2.5域格式
每行只能声明一个域。
域的声明用空行隔开。
2.5方法格式
2.6代码块格式
2.6.1缩进风格
大括号的开始在代码块开始的行尾,闭合在和代码块同一缩进的行首,同一层次的代码要保持整齐,例如:
2.6.2空格的使用
2.6.2.1表示分割时用一个空格
不能这样:
if(a>
b){
//dosomethinghere
};
2.6.2.2运算符两边用一个空格隔开
例如:
不要写成:
2.6.2.3逗号语句后如不换行,紧跟一个空格
如下:
call(a,b,c);
不能如下:
call(a,b,c);
2.6.3空行的使用
空行可以表达代码在语义上的分割,注释的作用范围,等等。
将类似操作,或一组操作放在一起不用空行隔开,而用空行隔开不同组的代码,如图:
上例中的空行,使注释的作用域很明显.
∙连续两行的空行代表更大的语义分割。
∙方法之间用空行分割(尽量用一行空行)
∙域之间用空行分割
∙超过十行的代码如果还不用空行分割,就会增加阅读困难
3.注释规范
3.1注释vs代码
∙注释宜少二精,不宜多而滥,更不能误导
∙命名达意,结构清晰,类和方法等责任明确,往往不需要,或者只需要很少注释,就可以让人读懂;
相反,代码混乱,再多的注释都不能弥补。
所以,应当先在代码本身下功夫。
∙不能正确表达代码意义的注释,只会损害代码的可读性。
∙过于详细的注释,对显而易见的代码添加的注释,罗嗦的注释,还不如不写。
∙注释要和代码同步,过多的注释会成为开发的负担
3.2JavaDoc
表明类、域和方法等的意义和用法等的注释,要以javadoc的方式来写。
JavaDoc是个类的使用者来看的,主要介绍是什么,怎么用等信息。
凡是类的使用者需要知道,都要用JavaDoc来写。
非JavaDoc的注释,往往是个代码的维护者看的,着重告述读者为什么这样写,如何修改,注意什么问题等。
如下:
类
3.3块级别注释
3.3.1块级别注释,单行时用//,多行时用/*..*/。
3.3.2较短的代码块用空行表示注释作用域
3.3.3较长的代码块要用
/*------start:
------*/
和
/*--------end:
-------*/
包围
3.4行内注释
行内注释用//写在行尾
4最佳实践和禁忌
4.1每次保存的时候,都让你的代码是最美的
程序员都是懒惰的,不要想着等我完成了功能,再来优化代码的格式和结构,等真的把功能完成,很少有人会再愿意回头调整代码。
4.2使用log而不是System.out.println()
log可以设定级别,可以控制输出到哪里,容易区分是在代码的什么地方打印的,而System.out.print则不行。
而且,System.out.print的速度很慢。
所以,除非是有意的,否则,都要用log。
至少在提交到svn之前把System.out.print换成log。
4.3每个ifwhilefor等语句,都不要省略大括号{}