2 qq 33548622 qq_33548622 于 2016.02.01 09:54 提问

我做的签到功能,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()出现了两次...

3个回答

fk002008
fk002008   2016.02.01 12:33

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

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", "您今天已经签到过了,明天再来吧!");
 }


enpterexpress
enpterexpress   2016.02.01 10:06

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

qq_33548622
qq_33548622 是不是有点乱,,我写的代码。。。。逻辑混乱吧....??
接近 2 年之前 回复
sinat_31535993
sinat_31535993   Rxr 2016.02.01 10:39

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

qq_33548622
qq_33548622 回复sinat_31535993: 这个是 客户要求的 -。-
接近 2 年之前 回复
sinat_31535993
sinat_31535993 我第一个月的第一条签到,然后10天之后在签到?难倒算从未签到?
接近 2 年之前 回复
qq_33548622
qq_33548622 不对,你问错了吧,,,,,上次签到时间 字段为null ,不就是从未签到啊????
接近 2 年之前 回复
qq_33548622
qq_33548622 昨天 之前签到的, 还有字段 为null 的 ,一样对待 ,累计签到次数为1。新用户,字段默认为null,就是没签到过
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!