锁定老帖子 主题:你会犯这个失误吗??还有更好的重构吗??
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2012-03-30
最后修改:2012-03-31
if(saleOrderList.size() > 0 && saleOrderList.get(0).getOrderUuid() > 0 & saleOrderList.get(0).getOrder().getState() == OrderStateEnum.wait_pay) { ActionContext.getContext().put("orderUuid", saleOrderList.get(0).getOrderUuid()); return "redirectToPay"; }
前提: 1、saleOrderList.get(0).getOrderUuid() 如果 等于 0 表示 没有订单 ,,,即 saleOrderList.get(0).getOrder() 将返回null
先别看答案,,看看嘛失误?????????
我犯的失误::::
saleOrderList.get(0).getOrderUuid() > 0 & saleOrderList.get(0).getOrder().getState() == OrderStateEnum.wait_pay
用了 & 而不是 &&
位与 "&" 是 非短路的
逻辑与 "&&" 是短路的
======================重构代码为如下形式===============
private boolean canPay(saleOrderList) { if(saleOrderList == null || saleOrderList.size() == 0) { return false; } SaleOrderModel saleOrder = saleOrderList.get(0); if( saleOrder .getOrderUuid() <= 0 ) { return false; } if( saleOrder.getOrder().getState() != OrderStateEnum.wait_pay) { return false; } return true; } 这样效果更佳
还有更好的重构吗??欢迎拍砖 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2012-03-30
还是python用and写着不容易错
|
|
返回顶楼 | |
发表时间:2012-03-30
dieslrae 写道 还是python用and写着不容易错
这个真是不小心 写错的 以前从没错过 找了老半天 |
|
返回顶楼 | |
发表时间:2012-03-30
最后修改:2012-03-30
如果saleOrderList == null 你就悲剧了
|
|
返回顶楼 | |
发表时间:2012-03-30
兜兜毛毛 写道 如果saleOrderList == null 你就悲剧了
这个倒不会 肯定不为null 哈哈哈 |
|
返回顶楼 | |
发表时间:2012-03-30
你这判断有问题,应该先判断null,不判断size==0!!
|
|
返回顶楼 | |
发表时间:2012-03-30
看到楼主这代码, 哎、、、、、 初级程序员啊
|
|
返回顶楼 | |
发表时间:2012-03-30
一眼看到那个&...
|
|
返回顶楼 | |
发表时间:2012-03-30
很少用& 一般不会写少, 证明你写代码不够细心。
就算写错吧, DEBUG还是能找到问题啊, 证明你DEBUG用的比较少, 你这个DEBUG 调试了吗? 看不出来? |
|
返回顶楼 | |
发表时间:2012-03-30
if(saleOrderList.size() > 0 && saleOrderList.get(0).getOrderUuid() > 0 & saleOrderList.get(0).getOrder().getState() == OrderStateEnum.wait_pay) { ActionContext.getContext().put("orderUuid", saleOrderList.get(0).getOrderUuid()); return "redirectToPay"; }
if(saleOrderList.size()>0) { SaleOrder order = saleOrderList.get(0); int uuid = order.getOrderUuid(); if(uuid > 0 && order.getOrder().getState() == OrderStateEnum.wait_pay) { ActionContext.getContext().put("orderUuid", uuid); } } -------------------------这样整理一下代码不是更好吗?------^_^---------------- |
|
返回顶楼 | |