定义
https://en.wikipedia.org/wiki/Cyclomatic_complexity#Definition
简单的理解就是这段代码流程的复杂度, 假设需要单元测试覆盖,需要的 case 数量.
主要体现在
- if … else … 分支
- loop
- && / || 分支
- switch 分支
- 嵌套层数
- 内嵌函数 等
检测工具
vs code 插件 :
检测方法级别的圈复杂度,并给出增加复杂度的相关代码
使用截图
SonarQube
Sonar 只能检测到文件级别,而且不能标示具体增加的具体行.
所以推荐使用 vsc 的插件
基本优化方案
- 抽象重用方法
- 组件拆分
- 算法优化
- 其他请 google
- 拆分方法,尽力做到一个方法只负责一件事