程序员

减少if...else的嵌套

2017-11-17  本文已影响58人  偏偏注定要落脚丶

   今天遇到了一个很简单但是比较实用的小经验来给大家分享一下。
   我们经常会遇到这样的场景:从前端接收数据,后台验证后存到数据库中。以一个具体的场景来说,对一个用户的信息进行更新。前端传来一系列的信息,包括用户id。首先,要判断id是否合法,其次判断数据库中是否存在该id的用户。数据不满足要求就抛出错误。判断成功后,再进行一系列的更新操作。一般我是这样写的:

if ($id){ // id不为空
     $teacher = Teacher::where('id', $id)->first();
     if ($teacher){ // 存在该id的教师
          // 一些列更新操作代码
      } else {
          return $this->error->INVALID_PARAM;
      }
  } else {
      return $this->error->INVALID_PARAM;
  }

   很明显,这样的话需要两层的if...else嵌套。如果还需要其他的逻辑判断,可能还要嵌套更多层,这样就显得代码不简洁。我们可以这样来写:

 if (!$id){
            return $this->error->INVALID_PARAM;
        }
$teacher = Teacher::where('id', $id)->first();
        if (!$teacher){
            return $this->error->INVALID_PARAM;
        }
// 一系列更新操作的代码

   由于不满足情况的话是直接return的,if语句通不过不会再执行后面的语句。这样if语句和if后面的语句只有一处可以执行,就类似于if...else。满足这样的情况就可以使用上面的方法来优化代码的结构。

上一篇 下一篇

猜你喜欢

热点阅读