在条件中嵌套if语句与复杂逻辑

Ana*_*dic 1 java nested-if

我有以下问题.我需要验证日期和时间,因此如果星期几是星期二星期四,并且时间是2:00到3:00 PM ,则返回false .

我有两个选择:

if (appointmentRequest.getDateTime().getDayOfWeek() == DayOfWeek.TUESDAY
                || appointmentRequest.getDateTime().getDayOfWeek() == DayOfWeek.THURSDAY) {
            if (appointmentRequest.getDateTime().getHour() == 2) {
                return false;
            }
        }
Run Code Online (Sandbox Code Playgroud)

选项2:

if ((appointmentRequest.getDateTime().getDayOfWeek() == DayOfWeek.TUESDAY
                || appointmentRequest.getDateTime().getDayOfWeek() == DayOfWeek.THURSDAY)
                && (appointmentRequest.getDateTime().getHour() == 2)) {
            return false;
        }
Run Code Online (Sandbox Code Playgroud)

在这种情况下,最佳做法是什么?

Bat*_*eba 5

逻辑上它们是等价的,并且在计算上,运行时间的差异可以忽略不计.

始终力求清晰,并且更加可扩展,更易于维护.根据经验,请记住,虽然您通常只编写一行代码,但您将调试数百次.

我的直觉是第一个选项适合那个.if如果你做出选择,很容易在第二行设置换行符.

  • Aggree,但我会创建一个类似verifyDayOfWeek(appointmentRequest.getDateTime())的方法和类似于Hour的方法.这样你可以有类似的东西:if(!verifyDayOfWeek()&&!verifyHour()) (2认同)