阅读 McCabe 关于圈复杂度的文章后,它写道:
一个不太常见但对复杂性影响更大的问题是“带有案例标签的语句”和“案例标签”之间的区别。当多个案例标签应用于同一程序语句时,这将被建模为控制流图中的单个决策结果边,从而增加了复杂性。
我不明白 - 什么是“案例标签声明”和“案例标签”?
他们的意思是如果case 1
,,case 2
例如,都跳转到case 3
?
阅读 McCabe 关于圈复杂度的文章后,它写道:
一个不太常见但对复杂性影响更大的问题是“带有案例标签的语句”和“案例标签”之间的区别。当多个案例标签应用于同一程序语句时,这将被建模为控制流图中的单个决策结果边,从而增加了复杂性。
我不明白 - 什么是“案例标签声明”和“案例标签”?
他们的意思是如果case 1
,,case 2
例如,都跳转到case 3
?
是的,McCabe 指出了直接标记陈述的案例和落入另一个案例的案例之间的复杂性差异。
每个“case-labeled statement”都会增加圈复杂度,所以下面的例子增加了 +3。
switch (arg) {
case "foo" : System.out.println("foo");
case "bar" : System.out.println("bar");
case "baz" : System.out.println("baz");
}
落入另一个案例的“案例标签”不会增加圈复杂度,因此以下示例会增加 +1。
switch (arg) {
case "foo" :
case "bar" :
case "baz" : System.out.println("foo | bar | baz");
}