我有以下问题。我需要验证日期和时间,因此如果星期几星期二或星期四并且时间在2:00到3:00 PM之间,则返回false。
我有两个选择:
if (appointmentRequest.getDateTime().getDayOfWeek() == DayOfWeek.TUESDAY
|| appointmentRequest.getDateTime().getDayOfWeek() == DayOfWeek.THURSDAY) {
if (appointmentRequest.getDateTime().getHour() == 2) {
return false;
}
}
选项2:
if ((appointmentRequest.getDateTime().getDayOfWeek() == DayOfWeek.TUESDAY
|| appointmentRequest.getDateTime().getDayOfWeek() == DayOfWeek.THURSDAY)
&& (appointmentRequest.getDateTime().getHour() == 2)) {
return false;
}
在这种情况下,最佳做法是什么?
答案 0 :(得分:5)
逻辑上它们是等价的,并且在计算上,运行时间的差异可以忽略不计。
始终追求清晰度以及更易于扩展且维护更简单的。根据经验,请记住,虽然您通常只编写一行代码,但您将调试数百次。
我的直觉是第一个选项适合那个。如果您做出选择,在第二个if
上设置换行符很容易。
答案 1 :(得分:2)
我发现你的问题有点像错误的二分法;清晰度可以通过其他方式获得,例如通过将公共子表达式提取到变量并依赖EnumSet
的组合:
LocalDateTime dt = appointmentRequest.getDateTime();
if (EnumSet.of(TUESDAY, THURSDAY).contains(dt.getDayOfWeek()) && dt.getHour() == 2) {
return false;
}