如何优化此代码-Sonar警告

时间:2015-06-03 10:37:28

标签: java sonarqube

声纳警告太复杂的方法。

我有以下代码段,但我不确定如何修改它:

for(OrtErgAllType ergAllType : oast.getOrt()) {
    if(ergAllType.getLaenderkennzeichen().equalsIgnoreCase(COUNTRY_CODE)) {
        String plzAndOrt = composePLZAndOrt(ergAllType.getPostleitzahl(), ergAllType.getPostortKurz());
        if (!cities.contains(plzAndOrt)) {
            items.add(new SelectItem(plzAndOrt));
            cities.add(plzAndOrt);        
        }    
    }
}

2 个答案:

答案 0 :(得分:0)

通过将if-condition或if-satement移动到新方法并调用它们来分解多种方法的复杂性。

这样的事情:

public void stuffFromInsideTheIf(Params...) {
    String plzAndOrt = composePLZAndOrt(ergAllType.getPostleitzahl(), ergAllType.getPostortKurz());
    if (!cities.contains(plzAndOrt)) {
        items.add(new SelectItem(plzAndOrt));
        cities.add(plzAndOrt);
    }
}

答案 1 :(得分:0)

您可以简单地合并两个if语句

for(OrtErgAllType ergAllType : oast.getOrt()) {
    String plzAndOrt = composePLZAndOrt(ergAllType.getPostleitzahl(), ergAllType.getPostortKurz());
    if(ergAllType.getLaenderkennzeichen().equalsIgnoreCase(COUNTRY_CODE) && !cities.contains(plzAndOrt)) {
        items.add(new SelectItem(plzAndOrt));
        cities.add(plzAndOrt);
    }
}