减小圈复杂度 - Cyclomatic Complexity

文章讨论了如何降低C代码的圈复杂度,以提高代码的可读性和可维护性。作者指出,过深的if嵌套会增加圈复杂度,导致维护困难。建议通过提炼函数、替换复杂算法、简化条件表达式和优化函数调用来改善代码质量。具体措施包括函数封装、条件表达式的分解和合并、移除控制标记以及分离查询和修改功能等。
摘要由CSDN通过智能技术生成

由于之前开发的模块是C++的,功能也相对简单,代码整体上来说简洁明了,清晰易懂。最近呢,由于项目原因,需要去熟悉C代码,因为功能相对复杂一些,所以每个函数都是很大,几百行一个。其实行数倒是其次,最让我讨厌的是代码本身写得是太复杂。简单一个例子就是:

void func()
{
    if (condition)
    {
        ...
        if (condition)
        {
            几百行
        }
        ...
    }
}

我不知道大家看出来什么没有,这是一个圈复杂度很高的函数。不断的进行if嵌套,观感上就非常糟糕,即使当前没有问题,我想后期维护过程中,这种代码绝对很容易出问题。

如果改成如下,

void func()
{
    if (!condition)
        return;
        ...
    if (!condition)
        return;
        ...
}
这样的代码是不是易读多了。

下面找了些可以减少圈复杂的方法:

1. 重新组织函数

a. 提炼函数 - 将代码组织独立出来,使用函数进行封装,通过函数名诠释代码作用

b. 替换你的算法 - 使用更为简洁的代码,记住:复杂算法会导致bug可能性的增加及可理解性/可维护性的降低,如果函数对performance或者resource要求不高,提倡更为简单明了的算法。

2. 简化条件表达式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值