2016-06-20 1 views
0

Я получаю цикломатическую сложность (The Cyclomatic Complexity of this method "mapRow" is 13 which is greater than 10 authorized) снизу код:Как удалить цикломатический complexcity

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; 
    } 

Как удалить эту сложность из приведенной выше коды?

+0

создать метод, как 'getStringValue (rs.getString (13)),' –

+0

или просто установить значение и изменить все нулевые значения в один хит позже –

ответ

2

Создайте метод, который будет инкапсулировать тройной оператор и т.д .:

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

Или еще проще:

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

переопределение сеттеров RedemptionReport в. Это должно принадлежать классу домена, поскольку значения по умолчанию имеют смысл только в классе RedemptionReport. Передайте значение «rs.getString (x)» методу сеттера.

1
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; 
    } 

определить другое личное сообщение, чтобы выполнить такую ​​работу (Null Проверить и вернуть значение по умолчанию).

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