圈复杂度(Cyclomatic Complexity)是很常用的一种度量软件代码复杂程度的标准。这里所指的“代码复杂程度”并非软件内在业务逻辑的复杂程度,而是指代码的实现方式的 复杂程度。说起来有点绕是么?打个比方就是嘴笨的人可以把简单的事情说得很复杂。虽然“内在业务逻辑”与“实现方式”有紧密的联系,有很多研究统计指出, 圈复杂度高的代码中错误的可能性更大,维护的成本更高。
 
它的计算方法很简单,计算公式为:V(G)=e-n+2。其中,e表示控制流图中边的数量,n表示控制流图中节点的数量。其实,圈复杂度的计算还有更直观的方法,因为圈复杂度所反映的是“判定条件”的数量,所以圈复杂度实际上就是等于判定节点的数量再加上1,也即控制流图的区域数,对应的计算公式为:V(G)=区域数=判定节点数+1。
关于圈复杂度的具体介绍可参见 http://en.wikipedia.org/wiki/Cyclomatic_complexity,网上也有很多中文资料。
非常非常简单的说它就是统计一个函数有多少个分支(if, while,
for,等等),没有的话复杂度为一,每增加一个分支复杂度加一。让很多人不解的是,无论这些分支是并列还是嵌套,统统都是加一。

从一个非常非常简单的角度来理解,一个函数的圈复杂度就相当于至少需要多少个测试用例才能对这个函数做到全路径覆盖。

最新文章

  1. 视频 - 在 VirtualBox 中部署 OpenStack
  2. POJ 2104 K-th Number(主席树——附讲解)
  3. 一个最小化的SpringBoot项目
  4. libevent 安装异常
  5. Python tools for Visual Studio插件介绍
  6. ABAP->内表数据下载到CSV格式(原创转载请注明)
  7. 以静态变量保存 Spring ApplicationContext
  8. 2017 google Round D APAC Test 题解
  9. mysql5.1,5.5,5.6做partition时支持的函数
  10. 解决IE无法访问localhost问题
  11. json格式数据整理
  12. [ 高危 ] mt SQL注入
  13. sip 注册流程
  14. FFmpeg4.0笔记:file2rtmp
  15. Windows 2003扩充磁盘空间
  16. Spring AOP注解为什么失效?90%Java程序员不知道
  17. spring---transaction(3)---源代码分析(事务的管理器PlatformTransactionManager)
  18. 一个残酷的生鲜O2O之梦
  19. hibernate核心及常用技术
  20. POJ 3168 Barn Expansion (几何+排序)

热门文章

  1. 【C++】函数和指针
  2. 紫书 例题8-13 UVa 11093 (反证法)
  3. [TJOI2011]树的序(贪心,笛卡尔树)
  4. 软件project之软件设计
  5. Linux路由表的抽象扩展应用于nf_conntrack
  6. USACO Section 1.3 : Calf Flac (calfflac)
  7. What's the difference between returning void and returning a Task?
  8. Fast Flux技术——本质就是跳板,控制多个机器,同一域名指向极多的IP(TTL修改为0),以逃避追踪
  9. 转一篇100offer的采访~35岁程序员是一种什么状态
  10. Android——PullToRefresh自动刷新