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;
}
}
答案 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);
您if
和else
是多余的
答案 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.**