我發現關於圈複雜度on Wikipedia以下段落:cyclomatic複雜性= 1 + #if語句?
可以看出,任何結構化程序,只有一個入口點和一個出口點的圈複雜度等於(決策點的數量即「if」語句或條件循環)包含在該程序中加上一個。
這將意味着3圈複雜度的任意兩個嵌套的if語句:
if (a)
{
if (b)
{
foo();
}
else
{
bar();
}
}
else
{
baz();
}
由於恰好的三個功能是去一個被稱爲,我的直覺與3
同意然而,兩個任意if語句也可以按順序寫入,而不是嵌套它們:
if (a)
{
foo();
}
else
{
bar();
}
if (b)
{
baz();
}
else
{
qux();
}
現在有通過代碼四條路徑:
- 富,巴茲
- 富,qux
- 酒吧,巴茲
- 酒吧,qux
不應該這樣做的圈複雜度片段因此是4而不是3?
我誤解了引用的段落嗎?
這個確切的例子在您鏈接的文章中進行了討論:http://en.wikipedia.org/wiki/Cyclomatic_complexity#Implications_for_software_testing –