常见降低圈复杂度方法

圈复杂度计算方式

圈复杂度(CC) = 判断条件个数 + 1 其中1代表函数本身的复杂度
关键字if, else if, for, while, &&, ||, case, catch等。

if,if~else, if~else if ,for, switch , while语句进行简要说明:


  • If中有几个判断条件算几个,else算一个
  • else if 有几个判断条件算几个
  • for 中第二个判断条件有几个算几个
  • switch 中有几个break算几个
  • while 中有几个判断算几个

之后函数的圈复杂度是所有的语句判断数加函数本身

常用降低圈复杂度的方法
1. 采用三元表达式

举例

if (condition)
{
    c = a;
}
else
{
    c = b;
}

可修改为:

c = (condition) ? a : b;
2. 合并条件表达式

举例:

if (a || b || c )
{}

可修改为:

bool flag = a || b || c ;
if (flag)
{}
3. 拆分成子函数
4. switch…case…可以使用Map
5. 去掉没有必要的else
if (false)
{
    return;
}
else
{
    c = a;
}

可修改为:

if (false)
{
    return;
}
c = a;
6. 重构函数

举例:同一条件多处出现

if (list.empty())
{
    if (a)
    {
             // do something 1...
    }
}
else
{
    if (a)
    {
             // do something 2...
    }
}
if (a)
{
    // do something 3...
}

可修改为:

if (a)
{
    if (list.empty())
    {
             // do something 1...
    }
    else
    {
             // do something 2...
    }
    // do something 3...
}
  • 24
    点赞
  • 76
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值