指标与架构
代码复杂度
衡量代码理解、测试和维护难度的定量指标,基于分支、嵌套深度和依赖等因素。
定义
代码复杂度通过各种指标测量:圈复杂度(独立路径数量)、认知复杂度(Sonar的可理解性度量)、Halstead指标(基于操作符和操作数)和代码行数。高复杂度与更高的缺陷率和更长的开发时间相关。SonarQube、ESLint、diffray等工具测量并标记复杂代码。
为什么重要
研究表明,圈复杂度>10的函数出现bug的可能性高4倍。复杂代码难以测试(需要更多测试用例)、审查(容易遗漏问题)和修改(高回归风险)。保持低复杂度是关键质量指标。
示例
一个有15个if/else分支、4个嵌套循环和3个try/catch块的函数具有高复杂度。重构为具有明确职责的更小、更专注的函数可以降低复杂度并提高可测试性。
相关术语
code complexitycomplexity metricsMcCabe complexitycognitive complexityreduce complexity