2014-02-11 31 views
1

Sonar給出了一個主要衝突錯誤(「簡化布爾表達式」)爲以下code.Following返回匹配日期方法的布爾值。什麼我應該採取哪些措施來克服這種違規行爲。 TNX簡化布爾表達式+(查找日期是否是一個給定的時間範圍之間)

private boolean matchDate(Calendar createdDate, DateDomain dateRange) { 

    Calendar fromDateCal = Calendar.getInstance(); 
    fromDateCal.setTime(dateRange.getDateFromD()); 

    Calendar toDateCal = Calendar.getInstance(); 
    toDateCal.setTime(dateRange.getDateToD()); 

    if (createdDate.after(fromDateCal) && createdDate.before(toDateCal)) { 

     return true; 

    } 

    else { 

     return false; 
    } 

} 

回答

2

不是聲納大師,但我會建議你做,

private boolean matchDate(Calendar createdDate, DateDomain dateRange) { 

     Calendar fromDateCal = Calendar.getInstance(); 
     fromDateCal.setTime(dateRange.getDateFromD()); 

     Calendar toDateCal = Calendar.getInstance(); 
     toDateCal.setTime(dateRange.getDateToD()); 

     return createdDate.after(fromDateCal) && createdDate.before(toDateCal); 

    } 

我希望這是它告訴。

代替檢查boolean並再次返回boolean,最好使用該boolean作爲返回參數。

+1

Thnx man!現在我明白了:) –

+1

@AmilaIddamalgoda很高興幫助你。 –

1

您可以刪除if else並直接按以下方式返回。

return createdDate.after(fromDateCal) && createdDate.before(toDateCal); 

ifelse是多餘的

+0

Thnx的幫助:) –

+1

@AmilaIddamalgoda:很高興幫助。 –

1

只是反覆使用

return createdDate.after(fromDateCal) && createdDate.before(toDateCal); 

無需多餘boolean值使用if-else

+0

Thnx幫助:) –

+1

@AmilaIddamalgoda歡迎您 –

0

這是檢查風格違規。聲納

SimplifyBooleanExpression

說明

支票過於複雜的布爾表達式的。當前查找代碼,如if(b == true),b || true,!false等

原理:複雜的布爾邏輯使代碼難以理解和維護。

**Instead of using true false directly, just return them like above solutions.** 
相關問題