简化布尔表达式+(查找日期是否在给定的日期范围之间)

时间:2014-02-11 10:06:05

标签: java

Sonar为以下代码提供了严重违规错误(“简化布尔表达式”)。以下返回匹配日期方法的布尔值。我应该采取哪些步骤克服这种违规行为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;
    }

}

4 个答案:

答案 0 :(得分: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 :(得分:1)

您可以删除if else并直接返回以下方式。

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

ifelse是多余的

答案 2 :(得分:1)

只需使用

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

使用boolean一次又一次无需冗余if-else值。

答案 3 :(得分:0)

这是一种检查风格违规。的声纳

SimplifyBooleanExpression

描述

检查过于复杂的布尔表达式。目前找到的代码如if(b == true),b ||是的,!假等等。

理由:复杂的布尔逻辑使代码难以理解和维护。

**Instead of using true false directly, just return them like above solutions.**