代碼重構中的幾個概念

最近使用SourceMonitor工具做代碼優化,過程中對一些原來耳熟能詳的名字現在有點模糊了。這裏記錄一下。


函數複雜度,這裏一般指的是函數圈複雜度。(Function Complexity


概念:

所謂圈複雜度是一種代碼複雜度的衡量標準。在軟件測試的概念裏,圈複雜度“用來衡量一個模塊判定結構的複雜程度,數量上表現爲獨立現行路徑條數,即合理的預防錯誤所需測試的最少路徑條數,圈複雜度大說明程序代碼可能質量低且難於測試和維護,根據經驗,程序的可能錯誤和高的圈複雜度有着很大關係”。


公式:

計算公式1:V(G)=e-n+2p。其中,e表示控制流圖中邊的數量,n表示控制流圖中節點的數量,p圖的連接組件數目(圖的組件數是相連節點的最大集合)。因爲控制流圖都是連通的,所以p爲1。

計算公式2:V(G)=區域數=判定節點數+1。其實,圈複雜度的計算還有更直觀的方法,因爲圈複雜度所反映的是“判定條件”的數量,所以圈複雜度實際上就是等於判定節點的數量再加上1,也即控制流圖的區域數。

計算公式3:V(G)=R。其中R代表平面被控制流圖劃分成的區域數。


函數深度(Block Depth

這個概念在網上沒有找到,我在SourceMonitor中試了一下。這裏的深度是基於文件來的。比如文件內容如下:

Prize {
    String (String s1String s2String s3){}
    (String a){}
}

block depth(0):1

block depth(1):3


函數深度是指嵌套的層數,最外層是0,每增加一層便加一。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章