如何避免多个for循环的声纳问题

时间:2017-10-21 18:50:06

标签: java sonarqube

如何以优化方式修改下面的代码,以便我们可以避免声纳问题?

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个以上

2 个答案:

答案 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)

您可以尝试以下技巧。

在另一些方法中编写嵌套循环,并使用参数调用该方法。