什么是圈复杂度,如何计算?


一、基本概念

1. 圈复杂度也成为条件复杂度是一种代码复杂度的衡量标准,用来衡量一个模块判定结构的复杂度
2. 数量上表现为独立现行路径的条数,说白了就是代码中分支的数量,也就是判定条件的数量,比如
	a. 有个if分支,代码复杂度就是1,如果if中有"||"或者"&&",那么代码复杂度就是2
	b. for和while同理

二、计算发放

1. 点边计算法
计算公式:V(G) = E - N + 2
e表示控制流途中边的数量,n表示控制流途中节点的数量
控制流图(参考别人),如if-else,While,until和正常的流程顺序:
![image](https://img2020.cnblogs.com/blog/1371249/202110/1371249-20211004095844795-15583820.png)

2. 节点判断法
根据圈复杂度反映的是“判定条件数量”,因此,算复杂度实际上就是等于判定节点数量+1,对应计算公式:V (G) = P + 1
判定条件例如:
	○ if语句
	○ while语句
	○ for语句
	○ case语句
	○ catch语句
	○ and和or布尔操作
	○ ?:三元运算符
注意:对于多分支的CASE结构或IF-ELSEIF-ELSE结构,统计判定节点的个数时需要特别注意一点,要求必须统计全部实际的判定节点数,也即每个ELSE IF语句,以及每个CASE语句,都应该算为一个判定节点。

这种方法的优点是计算方便,容易识别,因此常用

三、实践

1. 业务为核心,不能单纯想着降低复杂度,首先考虑业务上是否可以简化逻辑
2. 复杂的封装或者转换逻辑挪到一个转换中心去同一管理,降低耦合
3. 多方法代替一个方法的大量代码,也是低耦合,高内聚


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM