如何以优化方式修改下面的代码,以便我们可以避免声纳问题?
if (CollectionUtils.isNotEmpty(customerVoList)) {
for (CustomerVO customerVO : customerVoList) {
if (CollectionUtils.isNotEmpty(customerVO.getCardVos())) {
for (CardVO cardVO : customerVO.getCardVos()) {
float amount = redemptionService.getFutureRedemableBalance(cardVO.getCardNo(), cardVO.getCurrentBalance());
cardVO.setCurrentBalance(BigDecimal.valueOf(amount));
}
}
}
}
声纳抛出此异常:
如果/ for / while / switch / try语句
,则重构此代码不会嵌套3个以上
答案 0 :(得分:2)
您可以通过删除if
语句来简化此操作。你可以让for
遍历一个空列表,这相当于跳过循环。
for (CustomerVO customerVO : customerVoList) {
for (CardVO cardVO : customerVO.getCardVos()) {
float amount = redemptionService.getFutureRedemableBalance(cardVO.getCardNo(), cardVO.getCurrentBalance());
cardVO.setCurrentBalance(BigDecimal.valueOf(amount));
}
}
答案 1 :(得分:1)
您可以尝试以下技巧。
在另一些方法中编写嵌套循环,并使用参数调用该方法。