完整word版JAVA代码规范详细版.docx

上传人:b****3 文档编号:3065881 上传时间:2022-11-17 格式:DOCX 页数:16 大小:22.80KB
下载 相关 举报
完整word版JAVA代码规范详细版.docx_第1页
第1页 / 共16页
完整word版JAVA代码规范详细版.docx_第2页
第2页 / 共16页
完整word版JAVA代码规范详细版.docx_第3页
第3页 / 共16页
完整word版JAVA代码规范详细版.docx_第4页
第4页 / 共16页
完整word版JAVA代码规范详细版.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

完整word版JAVA代码规范详细版.docx

《完整word版JAVA代码规范详细版.docx》由会员分享,可在线阅读,更多相关《完整word版JAVA代码规范详细版.docx(16页珍藏版)》请在冰豆网上搜索。

完整word版JAVA代码规范详细版.docx

完整word版JAVA代码规范详细版

JAVA代码规范

本Java代码规范以SUN的标准Java代码规范为基础,为适应我们公司的实际需要,可能会做一些修改。

本文档中没有说明的地方,请参看SUNJava标准代码规范。

如果两边有冲突,以SUNJava标准为准。

1.标识符命名规范

1.1概述

标识符的命名力求做到统一、达意和简洁。

1.1.1统一

统一是指,对于同一个概念,在程序中用同一种表示方法,比如对于供应商,既可以用supplier,也可以用provider,但是我们只能选定一个使用,至少在一个Java项目中保持统一。

统一是作为重要的,如果对同一概念有不同的表示方法,会使代码混乱难以理解。

即使不能取得好的名称,但是只要统一,阅读起来也不会太困难,因为阅读者只要理解一次。

1.1.2达意

达意是指,标识符能准确的表达出它所代表的意义,比如:

newSupplier,OrderPaymentGatewayService等;而supplier1,service2,idtts等则不是好的命名方式。

准确有两成含义,一是正确,而是丰富。

如果给一个代表供应商的变量起名是order,显然没有正确表达。

同样的,supplier1,远没有targetSupplier意义丰富。

1.1.3简洁

简洁是指,在统一和达意的前提下,用尽量少的标识符。

如果不能达意,宁愿不要简洁。

比如:

theOrderNameOfTheTargetSupplierWhichIsTransfered太长,transferedTargetSupplierOrderName则较好,但是transTgtSplOrdNm就不好了。

省略元音的缩写方式不要使用,我们的英语往往还没有好到看得懂奇怪的缩写。

1.1.4骆驼法则

Java中,除了包名,静态常量等特殊情况,大部分情况下标识符使用骆驼法则,即单词之间不使用特殊符号分割,而是通过首字母大写来分割。

比如:

supplierName,addNewContract,而不是supplier_name,add_new_contract。

1.1.5英文vs拼音

尽量使用通俗易懂的英文单词,如果不会可以向队友求助,实在不行则使用汉语拼音,避免拼音与英文混用。

比如表示归档,用archive比较好,用pigeonhole则不好,用guiDang尚可接受。

1.2包名

使用小写字母如com.xxx.settlment,不要com.xxx.Settlement

单词间不要用字符隔开,比如com.xxx.settlment.jsfutil,而不要com.xxx.settlement.jsf_util

1.3类名

1.3.1首字母大写

类名要首字母大写,比如SupplierService,PaymentOrderAction;不要supplierService,paymentOrderAction.

1.3.2后缀

类名往往用不同的后缀表达额外的意思,如下表:

后缀名

意义

举例

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()

动词前缀往往表达特定的含义,如下表:

前缀名

意义

举例

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,每个缩进4个空格。

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缩进风格

大括号的开始在代码块开始的行尾,闭合在和代码块同一缩进的行首,例如:

packagecom.test;

 

publicclassTestStyleextendsSomeClassimplementsAppleInter,BananaInter{

publicstaticfinalStringTHIS_IS_CONST="CONSTVALUE";

 

privatestaticvoidmain(String[]args){

intlocalVariable=0;

}

 

publicvoidcompute(Stringarg){

if(arg.length()>0){

System.out.println(arg);

}

 

for(inti=0;i<10;i++){

System.out.println(arg);

}

 

while(condition){

 

}

 

do{

otherMethod();

}while(condition);

 

switch(i){

case0:

callFunction();

break;

case1:

callFunctionb();

break;

default:

break;

}

}

}

2.6.2空格的使用

2.6.2.1表示分割时用一个空格

不能这样:

if(a>b){

//dosomethinghere

};

2.6.2.2二元三元运算符两边用一个空格隔开

如下:

a+b=c;

b-d=e;

returna==b?

1:

0;

不能如下:

a+b=c;

b-d=e;

returna==b?

1:

0;

2.6.2.3逗号语句后如不还行,紧跟一个空格

如下:

call(a,b,c);

不能如下:

call(a,b,c);

2.6.3空行的使用

空行可以表达代码在语义上的分割,注释的作用范围,等等。

将类似操作,或一组操作放在一起不用空行隔开,而用空行隔开不同组的代码,如图:

order=orderDao.findOrderById(id);

 

//updateproperties

order.setUserName(userName);

order.setPrice(456);

order.setStatus(PAID);

 

orderService.updateTotalAmount(order);

 

 

session.saveOrUpdate(order);

上例中的空行,使注释的作用域很明显.

∙连续两行的空行代表更大的语义分割。

∙方法之间用空行分割

∙域之间用空行分割

∙超过十行的代码如果还不用空行分割,就会增加阅读困难

3.注释规范

3.1注释vs代码

∙注释宜少二精,不宜多而滥,更不能误导

∙命名达意,结构清晰,类和方法等责任明确,往往不需要,或者只需要很少注释,就可以让人

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

当前位置:首页 > 表格模板 > 书信模板

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

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