java编码规范文档.docx

上传人:小飞机 文档编号:3159734 上传时间:2023-03-11 格式:DOCX 页数:15 大小:43.12KB
返回 下载 相关 举报
java编码规范文档.docx_第1页
第1页 / 共15页
java编码规范文档.docx_第2页
第2页 / 共15页
java编码规范文档.docx_第3页
第3页 / 共15页
java编码规范文档.docx_第4页
第4页 / 共15页
java编码规范文档.docx_第5页
第5页 / 共15页
亲,该文档总共15页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《java编码规范文档.docx》由会员分享,可在线阅读,更多相关《java编码规范文档.docx(15页珍藏版)》请在三一办公上搜索。

1、java编码规范文档Java代码规范 1. 标识符命名规范 1.1 简洁 简洁是指,在统一和达意的前提下,用尽量少的标识符。如果不能达意,宁愿不要简洁。比如:theOrderNameOfTheTargetSupplierWhichIsTransfered 太长, transferedTargetSupplierOrderName则较好,但是transTgtSplOrdNm就不好了。省略元音的缩写方式不要使用,我们的英语往往还没有好到看得懂奇怪的缩写。 1.2 英文 vs 拼音 尽量使用通俗易懂的英文单词,如果不会可以向队友求助,实在不行则使用汉语拼音,避免拼音与英文混用。比如表示归档,用arc

2、hive比较好, 用pigeonhole则不好,用guiDang尚可接受。 1.3 包名 使用小写字母如 com.xxx.settlment,不要 com.xxx.Settlement 单词间不要用字符隔开,比如 com.xxx.settlment.jsfutil,而不要com.xxx.settlement.jsf_util 1.4 类名 1.4.1 首字母大写 类名要首字母大写,比如 SupplierService, PaymentOrderAction;不要 supplierService, paymentOrderAction. 1.5 方法名 首字母小写,如 addOrder 不要 A

3、ddOrder 动词在前,如 addOrder,不要orderAdd 名称不要太长 动词前缀往往表达特定的含义,如下表: 前缀名 create 意义 创建 举例 createOrder delete add remove init或则initialize destroy open close read write get set prepare copy modity calculate do dispatch start stop send receive respond find update 删除 deleteOrder 创建,暗示新创建的对象属于某个集合 addPaidOrder 删除

4、 初始化,暗示会做些诸如获取资源等特殊动作 销毁,暗示会做些诸如释放资源的特殊动作 打开 关闭 读取 写入 获得 设置 准备 复制 修改 数值计算 执行某个过程或流程 判断程序流程转向 开始 结束 发送某个消息或事件 接受消息或时间 响应用户动作 查找对象 更新对象 removeOrder initializeObjectPool destroyObjectPool openConnection closeConnection 0) System.out.println(arg); for (int i = 0; i b ) /do something here ; 2.4.2.2 二元三元运

5、算符两边用一个空格隔开 如下: a + b = c; b - d = e; return a = b ? 1 : 0; 不能如下: a+b=c; b-d=e; return a=b?1:0; 2.4.2.3 逗号语句后如不换行,紧跟一个空格 如下: call(a, b, c); 不能如下: call(a,b,c); 2.4.3 空行的使用 空行可以表达代码在语义上的分割,注释的作用范围,等等。将类似操作,或一组操作放在一起不用空行隔开,而用空行隔开不同组的代码, 如图: order = orderDao.findOrderById(id); /update properties order.s

6、etUserName(userName); order.setPrice(456); order.setStatus(PAID); orderService.updateTotalAmount(order); session.saveOrUpdate(order); 上例中的空行,使注释的作用域很明显. 连续两行的空行代表更大的语义分割。 方法之间用空行分割 域之间用空行分割 超过十行的代码如果还不用空行分割,就会增加阅读困难 3 注释规范 3.1 注释 vs 代码 注释宜少二精,不宜多而滥,更不能误导 命名达意,结构清晰, 类和方法等责任明确,往往不需要,或者只需要很少注释,就可以让人读懂;

7、相反,代码混乱,再多的注释都不能弥补。所以,应当先在代码本身下功夫。 不能正确表达代码意义的注释,只会损害代码的可读性。 过于详细的注释,对显而易见的代码添加的注释,罗嗦的注释,还不如不写。 注释要和代码同步,过多的注释会成为开发的负担 注释不是用来管理代码版本的,如果有代码不要了,直接删除,svn会有记录的,不要注释掉,否则以后没人知道那段注释掉的代码该不该删除。 3.2 Java Doc 表明类、域和方法等的意义和用法等的注释,要以javadoc的方式来写。Java Doc是个类的使用者来看的,主要介绍 是什么,怎么用等信息。凡是类的使用者需要知道,都要用Java Doc 来写。非Java

8、 Doc的注释,往往是个代码的维护者看的,着重告述读者为什么这样写,如何修改,注意什么问题等。 如下: /* * This is a class comment */ public class TestClass /* * This is a field comment */ public String name; /* * This is a method comment */ public void call 3.3 块级别注释 3.3.1 块级别注释,单行时用 /, 多行时用 /* . */。 3.3.2 较短的代码块用空行表示注释作用域 3.3.3 较长的代码块要用 /*- start

9、: -*/ 和 /*- end: -*/ 包围 如: /*-start: 订单处理 - */ /取得dao OrderDao dao = Factory.getDao(OrderDao); /* 查询订单 */ Order order = dao.findById(456); /更新订单 order.setUserName(uu); order.setPassword(pass); order.setPrice(ddd); orderDao.save(order); /*-end: 订单处理 - */ 3.3.4 可以考虑使用大括号来表示注释范围 使用大括号表示注释作用范围的例子: /*-订单

10、处理 - */ /取得dao OrderDao dao = Factory.getDao(OrderDao); /* 查询订单 */ Order order = dao.findById(456); /更新订单 order.setUserName(uu); order.setPassword(pass); order.setPrice(ddd); orderDao.save(order); 3.4 行内注释 行内注释用 / 写在行尾 4 最佳实践和禁忌 4.1 每次保存的时候,都让你的代码是最美的 程序员都是懒惰的,不要想着等我完成了功能,再来优化代码的格式和结构,等真的把功能完成,很少有人会

11、再愿意回头调整代码。 4.2 使用log而不是System.out.println log可以设定级别,可以控制输出到哪里,容易区分是在代码的什么地方打印的,而System.out.print则不行。而且,System.out.print的速度很慢。所以,除非是有意的,否则,都要用log。至少在提交到svn之前把System.out.print换成log。 4.3 每个if while for等语句,都不要省略大括号 看下面的代码: if (a b) a+; 如果在以后维护的时候,需要在a b 时,把b+,一步小心就会写成: if (a b) a+; b+; 这样就错了,因为无论a和b是什么关

12、系,b+都会执行。 如果一开始就这样写: if (a b) a+; 相信没有哪个笨蛋会把b+添加错的。而且,这个大括号使作用范围更明显,尤其是后面那行很长要折行时。 4.4 善用TODO: 在代码中加入 /TODO: ,大部分的ide都会帮你提示,让你知道你还有什么事没有做。比如: if (order.isPaid) /TODO: 更新订单 4.5 在需要留空的地方放一个空语句或注释,告述读者,你是故意的 比如: if (!exists(order) ; 或: if (!exists(order) /nothing to do 4.6 不要再对boolean值做true false判断 比如:

13、 if (order.isPaid = true) / Do something here 不如写成: if (order.isPaid) /Do something here 后者读起来就很是 if order is paid, . 要比 if orders isPaid method returns true, 更容易理解 4.7 减少代码嵌套层次 代码嵌套层次达3层以上时,一般人理解起来都会困难。下面的代码是一个简单的例子: public void demo(int a, int b, int c) if (a b) if (b c) doJobA; else if (b c) if (

14、a b & b c) doJobA; if (a b & c b) doJobB; if (a = b & c b & a b) if (b c) doJobA; return; doJobB return; if (b c) if (a 18) return true; else return false; 上面的代码可以这么写。 private boolean isEligible(int age) boolean result; if(age 18) result = true; else result = false; return result; 4.13 简化if-else方法:

15、我们写了一些只要一个参数的工具方法,检查一些条件并根据条件返回一个值。如,在上面见到的 isEligible方法。 private boolean isEligible(int age) boolean result; if(age 18) result = true; else result = false; return result; 可以只使用一个return语句来重写此方法。 private boolean isEligible(int age) return age 18; 4.14 不要为Boolean,Integer或String创建新的实例: 避免创建新的Boolean,In

16、teger,String等实例。使用Boolean.valueOf(true)代替new Boolean(true)。两种写法效果差不多但却可以改善性能。 4.15 把多个if语句合并成一个: 下面的代码 if(age 18) if( voted = false) / eligible to vote. 可以使用一个if语句改写为: if(age 18 & !voted) / eligible to vote 4.16 别忘了给switch添加default语句: 总是给switch添加一个default语句。 4.17 避免 重复 使用同样的字符串,创建一个常量吧: 如果你需要在多个地方使用同一个字符串,那就创建一个字符串常量来使用吧。 下面的代码: private void someMethod logger.log(My Application + e); . . logger.log(My Application + f); 可以创建一个常量代替字符串My Application: public static final String MY_APP = My Application; private void someMethod logger.log(MY_APP + e); . . logger.log(MY_APP + f);

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号