圈复杂度评价及工具
转载请注明出处:http://blog.csdn.net/horkychen
圈复杂度用来评价代码复杂度,以函数为单位,数值越大表示代码的逻辑分支越多,理解起来也更复杂。圈复杂度可以成为编码及重构的重要参考指标,以指导撰写可读性高的代码。有关圈复杂度的定义,可以自行搜索。《代码大全》有如下的定义:
计算子程序中决策点数量的技术 (代码大全2,19章P458)
1.由1计数,一直往下通过程序。
2.一旦遇到以下关键字,或者其同类的词,就加1:
if, while, repeat, for, and, or
3. 给case(switch)语句中的每一种情况都加1.
作者也给了处理复杂度度量结果的建议:
0-5: 子程序可能还不错
6-20: 得想办法简化子程序了
10+ 把子程序的某一部分拆分成另一个子程序并调用它。
这些数字和策略都不是绝对的,正如作者所言至少应当视其为警示。
也有工具可以帮我们完成复杂度的统计工作:cyclo (支持C/C++)
对Windows平台,可以使用MinGW编译。使用时,指定要进行统计的文件就可以了。