代码复杂度高于15的解决办法

  代码复杂度高于15都是for循环和if判断嵌套导致,降低代码复杂度最常用的方法就是将部分代码提炼成函数。
 
  而对于if判断多层嵌套导致代码复杂度高于15的情况,可以将这些if判断拆分成非嵌套形式。
 
  拆分嵌套的方法也很简单,就是定义一个bool类型临时变量(下称$ok),每个if判断都根据情况调整$ok的值,下一个if判断再根据$ok的值决定要怎么操作,从而实现if嵌套拆分。
 
  以用户登录为例,用户要成功登录必须同时满足三个条件:用户名存在、密码正确、用户未被冻结。

  嵌套式

function 登录(用户名, 密码) {
    $ok = false;
    
    if (用户名存在) {
        if (密码正确) {
            if (用户未被冻结) {
                $ok = true;
            }
        }
    }
    
    return $ok ? 登录成功 : 登录失败
}

  堆叠式

function 登录(用户名, 密码) {
    $ok = true;
    
    if (用户名不存在) {
        $ok = false;
    }
    
    if ($ok && 密码不正确) {
        $ok = false;
    }
    
    if ($ok && 用户已被冻结) {
        $ok = false;
    }
    
    return $ok ? 登录成功 : 登录失败
}

  堆叠式的缺点是效率比嵌套式稍低一点,如用户名不存在时,嵌套式直接就return了,而堆叠式要多执行两个if判断,但这点性能差距是非常微弱的,比起堆叠式带来的可维护性值得牺牲这点性能。

Copyright © 2024 码农人生. All Rights Reserved