圈复杂度

Posted 小数点就是问题

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了圈复杂度相关的知识,希望对你有一定的参考价值。

一、现象

1. 代码设计不规范。

当项目规模达到一定的程度,比如达到十万行的代码量。那么项目肯定存在有些类特别大,方法特别多、特别长。

以上因素会导致什么后果呢?

 

  • 一个类没有做到单一指责,后期对这个类改动会导致其他功能出现Bug。
  • 代码阅读性较差,维护困难。

2. 没有一个准确的标准去衡量代码结构复杂的程度。

各个公司都会有自己的规范,但是开发中很少人能够去完全遵循规范。而且没有一个明确的标准去衡量代码的复杂程度,而且人工去检测代码的复杂程度是很繁琐的。因此我们急需一个标准去检测代码结构复杂的程度,而圈复杂度这个技术就能够很好的去衡量代码的复杂程度。

 

二、圈复杂度的定义

圈复杂度是用来衡量一个模块判定结构的复杂程度,数量上表现为独立路径的条数。而独立路径就是在控制流程图中从起点到终点的一条回路。
1.1 控制流图(CFG, Control flow graph)也叫控制流程图。是一个过程或程序的抽象表现。常以数据结构链的形式表示。

圈复杂度高在代码中的表现形式:在一段代码中含有很多的 if / else 语句或者其他的判定语句(if / else , switch / case , for , while , | | , ? , …)。

 

详细:传送门

 

 

以上是关于圈复杂度的主要内容,如果未能解决你的问题,请参考以下文章

dotnet 代码优化 聊聊逻辑圈复杂度

.NET 代码优化 聊聊逻辑圈复杂度

降低圈复杂度

高圈复杂度会影响构建时间吗?

圈复杂度(Cyclomatic Complexity)

计算 Javascript 的圈复杂度 [关闭]