圈复杂度概要
最近的培训中了解到了一个概念,叫做圈复杂度。
圈复杂度(Cyclomatic Complexity)是一种衡量程序复杂度的度量方法。它由美国计算机科学家 Thomas J. McCabe 在 1976 年提出。圈复杂度通过统计程序的控制流图中的决策结构(例如条件语句和循环语句)来评估程序的复杂性和难度。
圈复杂度的计算基于程序的控制流图,控制流图由各种控制语句以及它们之间的关系组成。圈复杂度反映了一个程序中独立路径的数量,即可以通过程序执行的不同路径的数量。圈复杂度越高,表示程序的复杂性越大,测试和维护程序就会更加困难。
圈复杂度的计算方法
1.计数从 1 开始,一直往下通过程序2. 一旦遇到以下关键字,计数加 1 ( if / while / for / and / or)3. 为每一个 Case 子句加 14. 三元运算符 a ? b : c ,加 15. catch 子句,加 1
圈复杂度样例
例如下述代码,圈复杂度为11
圈复杂度与bug修复失败率
常见的圈复杂度计算工具
需要纠正的一个观念
有能力的程序员会充分的认识到自己的大脑容量是多么的有限,所以,他会非常谦卑的处理编程任务。 -- Edsger W. Dijkstra