Cyclomatic Complexity的常见原因及其解决方案

Dan*_*iel 4 cyclomatic-complexity

在工作中,我们正在研究导致高圈复杂性的常见问题.例如,具有大的if-else语句可能导致高的圈复杂度,但可以通过用多态替换条件来解决.你找到了什么其他的例子?

Pat*_*eam 5

请参阅NDepend 对Cyclomatic Complexity定义.

嵌套深度也是一个很好的代码度量标准.

循环复杂性是一种流行的程序软件度量,等于可以在过程中采取的决策数量.具体地说,在C#中,方法的CC是1 + {在方法体中找到的以下表达式的数量}:

如果| 而| 为| foreach | 案例| 默认| 继续| 转到| && | || | 赶上| 三元运算符?:| ??

以下表达式不计入CC计算:

别的| 做| 开关| 试试| 使用| 扔| 终于| 返回| 对象创建| 方法调用| 现场访问

适应OO世界,该度量在方法和类/结构上定义(作为其方法CC的总和).请注意,在计算其外部方法的CC时,不会计算匿名方法的CC.

建议:CC高于15的方法难以理解和维护.CC高于30的方法非常复杂,应该用较小的方法分割(除非它们是由工具自动生成的).