Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何消除圈复杂度_Java_Sonarlint - Fatal编程技术网

Java 如何消除圈复杂度

Java 如何消除圈复杂度,java,sonarlint,Java,Sonarlint,我从以下代码中获得圈复杂度(此方法“mapRow”的圈复杂度为13,大于10): public RedemptionReport mapRow(ResultSet rs, int row) throws SQLException { RedemptionReport redemptionReport = new RedemptionReport(); redemptionReport.setRedeemDate(rs.getString(1));

我从以下代码中获得圈复杂度(
此方法“mapRow”的圈复杂度为13,大于10):

public RedemptionReport mapRow(ResultSet rs, int row) throws SQLException {        
        RedemptionReport redemptionReport = new RedemptionReport();
        redemptionReport.setRedeemDate(rs.getString(1));
        redemptionReport.setCashierID(rs.getString(2) != null? rs.getString(2) : "");
        redemptionReport.setTillNo(rs.getString(3) != null? rs.getString(3) : "");
        redemptionReport.setReferenceNumber(rs.getString(4) != null? rs.getString(4) : "");
        redemptionReport.setTransactionNumber(rs.getString(5) != null? rs.getString(5) : "");
        redemptionReport.setRedemptionAmount(rs.getString(6) != null? rs.getString(6) : "0");
        redemptionReport.setNetBillValues(rs.getString(7) != null? rs.getString(7) : "0");
        redemptionReport.setStoreCode(rs.getString(8) != null? rs.getString(8) : "");
        redemptionReport.setCardNumber(rs.getString(9) != null? rs.getString(9) : "");
        redemptionReport.setCardType(rs.getString(10) != null? rs.getString(10) : "");
        redemptionReport.setStoreDesc(rs.getString(11) != null? rs.getString(11) : "");
        redemptionReport.setZoneDesc(rs.getString(12) != null? rs.getString(12) : "");
        redemptionReport.setMobileNo(rs.getString(13) != null? rs.getString(13) : "");
        redemptionReport.setSchemeName(rs.getString(14));
        return redemptionReport;
    }

如何从上述代码中消除这种复杂性?

创建一个封装三元运算符的方法,例如:

private String get(String val, String def) {
    return val != null ? val : def
}
或者更简单:

private String get(String val) {
    return val != null ? val : ""
}

创建一个封装三元运算符的方法,例如:

private String get(String val, String def) {
    return val != null ? val : def
}
或者更简单:

private String get(String val) {
    return val != null ? val : ""
}

覆盖赎回报告的设置程序。这应该属于域类,因为默认值仅在RedemptionReport类中才有意义。
将“rs.getString(x)”值传递给setter方法。

覆盖RedemptionReport的setter。这应该属于域类,因为默认值仅在RedemptionReport类中才有意义。
public RedemptionReport mapRow(ResultSet rs) throws SQLException {        
        RedemptionReport redemptionReport = new RedemptionReport();
        redemptionReport.setRedeemDate(this.getResultFromResultSet(rs.getString(1)));
        redemptionReport.setCashierID(this.getResultFromResultSet(rs.getString(2)));
        redemptionReport.setTillNo(this.getResultFromResultSet(rs.getString(3)));
        redemptionReport.setReferenceNumber(this.getResultFromResultSet(rs.getString(4)));
        redemptionReport.setTransactionNumber(this.getResultFromResultSet(rs.getString(5)));
        redemptionReport.setRedemptionAmount(this.getResultFromResultSet(rs.getString(6)));
        redemptionReport.setNetBillValues(this.getResultFromResultSet(rs.getString(7)));
        redemptionReport.setStoreCode(this.getResultFromResultSet(rs.getString(8)));
        redemptionReport.setCardNumber(this.getResultFromResultSet(rs.getString(9)));
        redemptionReport.setCardType(this.getResultFromResultSet(rs.getString(10)));
        redemptionReport.setStoreDesc(this.getResultFromResultSet(rs.getString(11)));
        redemptionReport.setZoneDesc(this.getResultFromResultSet(rs.getString(12)));
        redemptionReport.setMobileNo(this.getResultFromResultSet(rs.getString(13)));
        redemptionReport.setSchemeName(this.getResultFromResultSet(rs.getString(14)));

return redemptionReport;
    }
将“rs.getString(x)”值传递给setter方法

public RedemptionReport mapRow(ResultSet rs) throws SQLException {        
        RedemptionReport redemptionReport = new RedemptionReport();
        redemptionReport.setRedeemDate(this.getResultFromResultSet(rs.getString(1)));
        redemptionReport.setCashierID(this.getResultFromResultSet(rs.getString(2)));
        redemptionReport.setTillNo(this.getResultFromResultSet(rs.getString(3)));
        redemptionReport.setReferenceNumber(this.getResultFromResultSet(rs.getString(4)));
        redemptionReport.setTransactionNumber(this.getResultFromResultSet(rs.getString(5)));
        redemptionReport.setRedemptionAmount(this.getResultFromResultSet(rs.getString(6)));
        redemptionReport.setNetBillValues(this.getResultFromResultSet(rs.getString(7)));
        redemptionReport.setStoreCode(this.getResultFromResultSet(rs.getString(8)));
        redemptionReport.setCardNumber(this.getResultFromResultSet(rs.getString(9)));
        redemptionReport.setCardType(this.getResultFromResultSet(rs.getString(10)));
        redemptionReport.setStoreDesc(this.getResultFromResultSet(rs.getString(11)));
        redemptionReport.setZoneDesc(this.getResultFromResultSet(rs.getString(12)));
        redemptionReport.setMobileNo(this.getResultFromResultSet(rs.getString(13)));
        redemptionReport.setSchemeName(this.getResultFromResultSet(rs.getString(14)));

return redemptionReport;
    }
定义另一个私有消息来执行此类工作(空检查并返回默认值)

定义另一个私有消息来执行此类工作(空检查并返回默认值)


创建一个类似
getStringValue(rs.getString(13))的方法
或只需设置值并一次性更改所有空值即可创建一个类似
getStringValue(rs.getString(13))的方法或只是设置值,然后在一次点击中更改所有空值