2010-02-02 102 views
4

在工作中,我們正在研究導致高迴圈複雜性的常見問題。例如,擁有大的if-else語句可能會導致高複雜度,但可以通過用多態性替換條件來解決。你發現了什麼其他例子?環複雜性的常見原因及其解決方案

+0

任何構造了一個分支行爲增加了圈複雜度 – 2010-02-02 16:33:35

+0

http://en.wikipedia.org/wiki/Cyclomatic_complexity: – 2010-02-02 16:34:08

+0

你說「圈複雜性」就像它本身就是一件壞事。你看看導致實際問題的原因,你會不會做得更好? – 2010-02-02 16:39:58

回答

5

查看NDepend的definition of Cyclomatic Complexity

Nesting Depth也是一個很好的代碼度量。

循環複雜性是一種流行的過程軟件度量,它等於過程中可以採取的決策數量。具體而言,在C#中,方法的CC是1 + {在方法體中發現的以下表達式的數量}:

if |而|爲| foreach |案例|默認|繼續| goto | & & | || | catch |三元運算符?:| ??

以下表達式不計算CC計算:

其他|做|開關|嘗試|使用|扔|終於|返回|對象創建|方法調用|字段訪問

適應OO世界,此度量定義在方法和類/結構(作爲其方法CC的總和)上。請注意,計算其外部方法的CC時,不計算匿名方法的CC。

建議:CC高於15的方法難以理解和維護。 CC高於30的方法非常複雜,應該用較小的方法拆分(除非它們是由工具自動生成的)。

+0

不錯,你可以添加它的計算方式。 – 2012-12-27 19:33:46