什么是圈復雜度,如何計算?


一、基本概念

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