圈复杂度讨论

定义

一个方法从头走到结束会经过多少种路径。

如下图,该程序的圈复杂度为6。
在这里插入图片描述
由定义可以看出,圈复杂度与程序中if-else语句、switch语句的case数量、while语句的循环次数、throw等有直接关系。

影响

圈复杂度越高:

  • 程序越复杂,越难以测试和维护
  • 容易出bug

如何降低

  • 提取函数 - 将独立业务或模块代码独立出来,封装为函数,通过函数名诠释代码作用,做到见名知意。
  • 替换算法 - 复杂算法会导致bug可能性的增加及可理解性/可维护性的降低,如果函数对性能要求不高,提倡使用简单明了的算法。
  • 分解条件式 - 复杂的条件表达式,使用函数进行封装
  • 合并条件式 - 将一系列得到相同结果的条件表达式合并,可以的话封装为函数
  • 合并重复的条件片段 - 不同条件的分支,有相同的处理,可以提炼出分支以外,或者封装为函数
  • 移除控制标记 - 使用控制标签作为条件的,使用break 和 return取代
  • 将查询函数和修改函数分离 - 单一职责原则,强调函数的复用性而不是多用性
  • 函数携带参数 - 使用带参函数,强调函数的复用性
  • 以明确函数取代参数 - 强调函数的功能的明确性

引用
圈复杂度

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值