一、基本概念
1. 圈復雜度也成為條件復雜度是一種代碼復雜度的衡量標准,用來衡量一個模塊判定結構的復雜度
2. 數量上表現為獨立現行路徑的條數,說白了就是代碼中分支的數量,也就是判定條件的數量,比如
a. 有個if分支,代碼復雜度就是1,如果if中有"||"或者"&&",那么代碼復雜度就是2
b. for和while同理
二、計算發放
1. 點邊計算法
計算公式:V(G) = E - N + 2
e表示控制流途中邊的數量,n表示控制流途中節點的數量
控制流圖(參考別人),如if-else,While,until和正常的流程順序:

2. 節點判斷法
根據圈復雜度反映的是“判定條件數量”,因此,算復雜度實際上就是等於判定節點數量+1,對應計算公式:V (G) = P + 1
判定條件例如:
○ if語句
○ while語句
○ for語句
○ case語句
○ catch語句
○ and和or布爾操作
○ ?:三元運算符
注意:對於多分支的CASE結構或IF-ELSEIF-ELSE結構,統計判定節點的個數時需要特別注意一點,要求必須統計全部實際的判定節點數,也即每個ELSE IF語句,以及每個CASE語句,都應該算為一個判定節點。
這種方法的優點是計算方便,容易識別,因此常用
三、實踐
1. 業務為核心,不能單純想着降低復雜度,首先考慮業務上是否可以簡化邏輯
2. 復雜的封裝或者轉換邏輯挪到一個轉換中心去同一管理,降低耦合
3. 多方法代替一個方法的大量代碼,也是低耦合,高內聚