代碼的環複雜度(Cyclomatic complexity,有的地方又翻譯成圈複雜度)是一種代碼複雜度的衡量標準,在1976年由Thomas J. McCabe, Sr. 提出。java
在軟件測試的概念裏,圈複雜度用來衡量一個模塊斷定結構的複雜程度,數量上表現爲獨立線性路徑條數,即合理的預防錯誤所需測試的最少路徑條數。圈複雜度大說明程序代碼可能質量低且難於測試和維護。app
環複雜度 = E − N + 2工具
E = 程序控制流圖中邊的個數測試
N = 程序控制流圖中點的個數spa
看個具體的例子。下面這段ABAP代碼的環複雜度根據公式計算爲3.翻譯
DATA: lv_value TYPE i VALUE 1. IF lv_value = 1. WRITE: / 'always happend'. ELSEIF lv_value = 2. WRITE: / 'not possible'. ELSE. WRITE: / 'even not possible'. ENDIF.
先把代碼的程序流圖畫出來:3d
在ABAP裏用Code inspector這個工具測量代碼的環複雜度:code
具體步驟參考個人ABAP博客:blog
A Small tip to get all transparent tables used in ABAP codeip
Useful tips regarding ABAP code inspector that you may not know
而Java能夠用一個叫作SourceMonitor的工具測量環複雜度:
詳細使用參考個人博客Use SourceMonitor to monitor your java code complexity
要獲取更多Jerry的原創技術文章,請關注公衆號"汪子熙"或者掃描下面二維碼: