什么是案例标签声明和案例标签?

时间:2016-04-29 11:08:39

标签: language-agnostic switch-statement cyclomatic-complexity control-flow-graph

阅读了McCabe的article关于圈复杂性的文章,其内容如下:

  

对问题影响较大的不太常见的问题   复杂性是“案例标记的陈述”与之间的区别   “案例标签。”当多个案例标签适用于同一程序时   声明,这被建模为一个单一的决策结果边缘   控制流程图,为复杂性增加一个。

我不明白 - 什么是"案例标签声明"和"案例标签"?

它们是指case 1case 2,例如都跳到case 3

1 个答案:

答案 0 :(得分:1)

是的,McCabe指出直接标记声明的案例与通过落入另一案件的案件之间的复杂性差异。

每个"案例标签声明"增加了圈复杂度,因此以下示例添加了+3。

switch (arg) {
    case "foo" : System.out.println("foo");
    case "bar" : System.out.println("bar");
    case "baz" : System.out.println("baz");
}

A"案例标签" 通过转移到另一个案例不会增加圈复杂度,因此以下示例添加+1。

switch (arg) {
    case "foo" :
    case "bar" :
    case "baz" : System.out.println("foo | bar | baz");
}