圈复杂度评价及工具

简介: 转载请注明出处:http://blog.csdn.net/horkychen 圈复杂度用来评价代码复杂度,以函数为单位,数值越大表示代码的逻辑分支越多,理解起来也更复杂。

转载请注明出处: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编译。

使用时,指定要进行统计的文件就可以了。

目录
相关文章
|
8月前
|
算法
评价模型:TOPSIS法(理想解法)
评价模型:TOPSIS法(理想解法)
222 0
评价模型:TOPSIS法(理想解法)
|
9月前
|
负载均衡 监控 算法
转:启发式算法对网络行为管理系统的应用研究、实用性分析及实现难度
启发式算法在网络行为管理系统中的应用研究是一个重要的领域,它可以帮助改善系统的性能和效率。启发式算法是一种通过模拟自然界的演化过程或启发式规则来解决复杂问题的方法。
56 2
|
11月前
|
机器学习/深度学习 存储 人工智能
ChatGPT的各项超能力从哪儿来?万字拆解追溯技术路线图来了!(1)
ChatGPT的各项超能力从哪儿来?万字拆解追溯技术路线图来了!
119 0
|
11月前
|
机器学习/深度学习 存储 自然语言处理
ChatGPT的各项超能力从哪儿来?万字拆解追溯技术路线图来了!(2)
ChatGPT的各项超能力从哪儿来?万字拆解追溯技术路线图来了!
141 0
|
Cloud Native 安全 Java
代码圈复杂度治理小结
我们一直在说系统很复杂,那到底什么是系统复杂度呢?作为团队的稳定性底盘负责人,也经常和大家探讨为什么会因为圈复杂度高而被扣分。那么,怎么才能写的一手可读,可扩展,可维护的好代码?本文作者尝试结合在团队内部的实践,分享下过程中心得。
代码圈复杂度治理小结
|
图形学
为什么说“3D建模”是未来不可少的行业
随着国家文化政策的大力支持,一场新世纪的文化复兴运动,正在悄然展开。文化娱乐产业蓬勃发展,而随着生活水平的不断提高,人们也越来越愿意在精神享受上花钱。**电影行业、游戏行业**就是两个典型的例子。
102 0
为什么说“3D建模”是未来不可少的行业
|
Python
秩和比综合评价法(RSR)详解及Python实现和应用
秩和比综合评价法(RSR)详解及Python实现和应用
776 0
秩和比综合评价法(RSR)详解及Python实现和应用
|
算法 前端开发 Serverless
测试圈相亲平台开发流程(20):匹配算法(上)
测试圈相亲平台开发流程(20):匹配算法(上)
测试圈相亲平台开发流程(20):匹配算法(上)
测试圈相亲平台开发流程(21):匹配算法(下)
测试圈相亲平台开发流程(21):匹配算法(下)
测试圈相亲平台开发流程(21):匹配算法(下)