我做的签到功能,if/else那块逻辑,看看能不能简化,感觉乱乱的...

int leijiqiandao = 1;// 累计签到次数
if (qiandao== null)
return;
if (qiandao.getTime() != null) {
// 上次签到时间 为今天
if (isToday(qiandao.getTime())) {
model.addAttribute("msg", "您今天已经签到过了,明天再来吧!");
} else {
// 上次签到时间 为昨天
if (isYesterday(qiandao.getTime())) {
if (qiandao.getLeijiqiandao() != null) {
leijiqiandao = qiandao.getLeijiqiandao() + 1;
}
}
方法a();
}
} else {// 签到时间为NULL,从未签到过
方法a();
}

我做的签到功能,if/else那块看看能不能简化,感觉乱乱的...
if/else 那块逻辑, 方法a()出现了两次...

必要的判断该做还得做,完全是逻辑梳理

为啥今天和昨天没有签到,就是从未签到过?

如果你要简化逻辑那就用简单的条件变量来看看

if (qiandao.getTime() != null) { 为条件a

if (isToday(qiandao.getTime())) { 为条件b

你的条件是
a b xxxx
a !b 调用方法a
!a b 调用方法a
!a !b 调用方法a

所以最后的表达式简化为

if (!(a&&b)) {
    if(!b){
    // 上次签到时间 为昨天
         if (isYesterday(qiandao.getTime())) {
              if (qiandao.getLeijiqiandao() != null) {
                     leijiqiandao = qiandao.getLeijiqiandao() + 1;
               }
         }
          }
  调用方法a
 } else  {
     model.addAttribute("msg", "您今天已经签到过了,明天再来吧!");
 }