该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2012-03-31
youarestupid 写道 devroller2 写道 devroller2 写道 lz你的if条件并不是很难理解,原因是只有&&,人理解还是比较容易,所以你的第一个方法是可行的。
那种既包含&&又包含||、()的,让人读了半天绕不过来的才需要重构,否则格式化一下代码就可以了。 当然,你项目中有很多相同的这段逻辑,那么重构为一个方法是一定的。 如果是同一层次,if()条件内写得再多,也是可以的,如下代码: int num = 1; if((num == 12 || num == 13 || num == 14 || num == 15) && (num > testNum)){ System.out.println("你好," + num); } 上面这段代码中,if()条件内看似很乱,很多,很复杂,但是其实是同一层次的判断,所以写在一个if()判断语句中是可行的。 嗯,道理是这样的! 1、但什么是不可读的 什么是可读的 没有很明晰的界限,因此应该有工具帮我们分析! 2、造成我说的问题的根本原因 是 没有测试用例,如果我有一个测试用例 测试到所有分支,也不会找老半天找不到 3、应用程序不同于 框架 和 工具,需求变化太快,可能上午是A模样,下午可能变成B,那应该如何写测试? 因此 我想要表达的是 面对变化如此之快的需求,尤其表现层,我们应该写 面向需求的测试(given when then ,given when then) 、而不是 单元测试。 |
|
返回顶楼 | |
发表时间:2012-03-31
有自己独特的见解是好事,但更多的是,要经历大量实践的考验
|
|
返回顶楼 | |
发表时间:2012-03-31
yjingzeming 写道 jinnianshilongnian 写道 yjingzeming 写道 一同事写了个window.location.href="....?XXOO=1&&eql=1";
这个还真没试过 会出现什么问题? 警告: Parameters: Invalid chunk ignored. 兄弟你一眼还没看出问题所在看来你WEB搞得不多哇 并不是所有的应用服务器会出现异常信息 |
|
返回顶楼 | |
发表时间:2012-03-31
KimHo 写道 有自己独特的见解是好事,但更多的是,要经历大量实践的考验
所以希望 有这方面经验的大哥 出来谈谈见解 学习学习 而且现在可能太盲目追求TDD,忽略了BDD,BDD更适合复杂可变的业务。 |
|
返回顶楼 | |
发表时间:2012-03-31
还好啦,刚开始我还常把label和table写错。。。
|
|
返回顶楼 | |
发表时间:2012-03-31
jinnianshilongnian 写道 KimHo 写道 有自己独特的见解是好事,但更多的是,要经历大量实践的考验
所以希望 有这方面经验的大哥 出来谈谈见解 学习学习 而且现在可能太盲目追求TDD,忽略了BDD,BDD更适合复杂可变的业务。 这方面的经验,老马最多(martin fowler大师也) |
|
返回顶楼 | |
发表时间:2012-03-31
KimHo 写道 jinnianshilongnian 写道 KimHo 写道 有自己独特的见解是好事,但更多的是,要经历大量实践的考验
所以希望 有这方面经验的大哥 出来谈谈见解 学习学习 而且现在可能太盲目追求TDD,忽略了BDD,BDD更适合复杂可变的业务。 这方面的经验,老马最多(martin fowler大师也) 哈哈哈,真希望有经验的人出来讨论下! 解惑! 一定要实践一段时间BDD 来看看适不适合! 实践出真知! |
|
返回顶楼 | |
发表时间:2012-03-31
chrhust 写道 saleOrder.getOrder().getState()这种我一般分开写,
Order order = saleOrder.getOrder(); if(order!=null && order.getState()...)虽然觉得很麻烦 正解,我一般也这样写。我始终觉得把“&&”写成“&”的可能性很小,不知楼主是故意的还是... |
|
返回顶楼 | |
发表时间:2012-03-31
jinnianshilongnian 写道 icelander 写道 一个方法里最好只有一个return
当然 越少越好,但实际可能吗? 这很难吗,编程规范最基本的东西 private boolean canPay(List<SaleOrderModel> saleOrderList) { if (CollectionUtils.isEmpty(saleOrderList)) { return false; } SaleOrderModel saleOrder = saleOrderList.get(0); if (saleOrder.getOrderUuid() <= 0) { return false; } if (saleOrder.getOrder().getState() != OrderStateEnum.wait_pay.getType()) { return false; } return true; } private boolean canPay(List<SaleOrderModel> saleOrderList) { boolean canPay = true; if (CollectionUtils.isEmpty(saleOrderList)) { canPay = false; } SaleOrderModel saleOrder = saleOrderList.get(0); if (saleOrder.getOrderUuid() <= 0) { canPay = false; } if (saleOrder.getOrder().getState() != OrderStateEnum.wait_pay.getType()) { canPay = false; } return canPay; } |
|
返回顶楼 | |
发表时间:2012-03-31
Frankie199 写道 chrhust 写道 saleOrder.getOrder().getState()这种我一般分开写,
Order order = saleOrder.getOrder(); if(order!=null && order.getState()...)虽然觉得很麻烦 正解,我一般也这样写。我始终觉得把“&&”写成“&”的可能性很小,不知楼主是故意的还是... 肯定不是故意的,,我想要的重点不是这 而是想引出 什么情况使用TDD 什么情况使用 BDD? 希望牛人指点 |
|
返回顶楼 | |