1、业务服务的方法 Impl这个类是一个实现类,而不是接口PaymentOrderServiceImplInter这个类是一个接口PaymentOrderServiceImplDao这个类封装了数据访问方法LifeCycleInterAction直接处理页面请求,管理页面逻辑了类UpdateOrderListActionListenerPaymentSuccessListenerEvent这个类代表了某种事件PaymentSuccessEventFactory生成某种对象工厂的类Adapter用来连接某种以前不被支持的对象的类DatabaseLogAdapterJob某种按时间运行的任务Payme
2、ntOrderCancelJobWrapper这是一个包装类,为了给某个类提供没有的能力SelectableOrderListWrapperBean这是一个POJOMenuStateBean1.4方法名首字母小写,如 addOrder() 不要 AddOrder()动词在前,如 addOrder(),不要orderAdd()动词前缀往往表达特定的含义,如下表:前缀名create创建createOrder()delete删除deleteOrder()add创建,暗示新创建的对象属于某个集合addPaidOrder()removeremoveOrder()init或则initialize初始化,暗
3、示会做些诸如获取资源等特殊动作initializeObjectPooldestroy销毁,暗示会做些诸如释放资源的特殊动作destroyObjectPoolopen打开openConnection()close关闭closeConnection() 0) System.out.println(arg); for (int i = 0; i b ) /do something here;2.6.2.2 二元三元运算符两边用一个空格隔开如下:a + b = c;b - d = e;return a = b ? 1 : 0;不能如下:a+b=c;b-d=e;return a=b?1:0;2.6.2.
4、3 逗号语句后如不还行,紧跟一个空格call(a, b, c);call(a,b,c);2.6.3 空行的使用空行可以表达代码在语义上的分割,注释的作用范围,等等。将类似操作,或一组操作放在一起不用空行隔开,而用空行隔开不同组的代码, 如图:order = orderDao.findOrderById(id);/update propertiesorder.setUserName(userName);order.setPrice(456);order.setStatus(PAID);orderService.updateTotalAmount(order);session.saveOrUpda
5、te(order);上例中的空行,使注释的作用域很明显. 连续两行的空行代表更大的语义分割。 方法之间用空行分割 域之间用空行分割 超过十行的代码如果还不用空行分割,就会增加阅读困难3. 注释规范3.1注释和代码 注释宜少二精,不宜多而滥,更不能误导 命名达意,结构清晰, 类和方法等责任明确,往往不需要,或者只需要很少注释,就可以让人读懂;相反,代码混乱,再多的注释都不能弥补。所以,应当先在代码本身下功夫。 不能正确表达代码意义的注释,只会损害代码的可读性。 过于详细的注释,对显而易见的代码添加的注释,罗嗦的注释,还不如不写。 注释要和代码同步,过多的注释会成为开发的负担 注释不是用来管理代码
6、版本的,如果有代码不要了,直接删除,svn会有记录的,不要注释掉,否则以后没人知道那段注释掉的代码该不该删除。3.2 Java Doc表明类、域和方法等的意义和用法等的注释,要以javadoc的方式来写。Java Doc是个类的使用者来看的,主要介绍 是什么,怎么用等信息。凡是类的使用者需要知道,都要用Java Doc 来写。非Java Doc的注释,往往是个代码的维护者看的,着重告述读者为什么这样写,如何修改,注意什么问题等。 如下:/* This is a class comment*/public class TestClass /* * This is a field comment
7、*/ public String name; * This is a method comment public void call() 3.3 块级别注释3.3.1块级别注释,单行时用 /, 多行时用 /* . */。3.3.2较短的代码块用空行表示注释作用域3.3.3较长的代码块要用/*- start: -*/和/*- end: -*/包围如:/*-start: 订单处理 - */ /*-start: 员工更新处理 - */ public void updateEmp(TbEmp emp) Transaction transaction = session.beginTransaction
8、(); empdao.merge(emp); mit(); session.flush(); /*-end:3.4 行内注释行内注释用 / 写在行尾4最佳实践和禁忌4.1 关于保存程序员都是懒惰的,不要想着等我完成了功能,再来优化代码的格式和结构,等真的把功能完成,很少有人会再愿意回头调整代码。所以,每次保存的时候,都让你的代码是最美的。4.2关于条件语句对于每个if或者while语句,不要忘记加上大括号。比如:if (a b) a+;如果在以后维护的时候,需要在a b 时,把b+,一步小心就会写成: b+;这样就错了,因为无论a和b是什么关系,b+都会执行。 如果一开始就这样写: b) 相信
9、没有哪个笨蛋会把b+添加错的。而且,这个大括号使作用范围更明显,尤其是后面那行很长要折行时。4.3 善用TODO:在代码中加入 /TODO: ,大部分的ide都会帮你提示,让你知道你还有什么事没有做。if (order.isPaid() /TODO: 更新订单4.4关于留空在需要留空的地方放一个空语句或注释,告述读者,你是故意的if (!exists(order) ;或: /nothing to do4.5关于 boolean类型不要再对boolean值做true false判断,比如:if (order.isPaid() = true) / Do something here不如写成: /D
10、o something here后者读起来就很是 if order is paid, . 要比 if orders isPaid method returns true, 更容易理解4.6 减少代码嵌套层次代码嵌套层次达3层以上时,一般人理解起来都会困难。下面的代码是一个简单的例子:public void demo(int a, int b, int c) if (a if (b c) doJobA(); else if (b doJobB() else if (a c doJobB();= b & c a 如果利用return 则成为: return;利用子方法,就是将嵌套的程序提取出来放到
11、另外的方法里。4.8 程序职责单一关注点分离是软件开发的真理。人类自所以能够完成复杂的工作,就是因为人类能够将工作分解到较小级别的任务上,在做每个任务时关注更少的东西。让程序单元的职责单一,可以使你在编写这段程序时关注更少的东西,从而降低难度,减少出错。4.9 变量的声明,初始化和被使用尽量放到一起比方说如下代码:int orderNum= getOrderNum();/do something withou orderNum herecall(orderNum);上例中的注释处代表了一段和orderNum不相关的代码。orderNum的声明和初始化离被使用的地方相隔了很多行的代码,这样做不好
12、,不如这样:4.10 缩小变量的作用域能用局部变量的,不要使用实例变量,能用实例变量的,不要使用类变量。变量的生存期越短,以为着它被误用的机会越小,同一时刻程序员要关注的变量的状态越少。实例变量和类变量默认都不是线程安全的,局部变量是线程安全的。4.11 尽量不要用参数来带回方法运算结果public void calculate(Order order) int result = 0; /do lots of computing and store it in the result order.setResult(result);public void action() order = orderDao.findOrder(); calculate(order); / do lots of things about order例子中calculate方法通过传入的order对象来存储结果, 应该如下写:public int calculate(Order order) return result; order.setResult(calculate(order);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1