高复杂度 (High Complexity)
ID: complexity | 严重程度: 中 (默认)
该检测器识别具有高圈复杂度 (Cyclomatic Complexity) 的函数。
为什么这是一种坏味道
- 难以理解: 过多的分支路径使代码难以追踪。
- 易出错: 在测试期间漏掉边缘情况的可能性更高。
- 维护噩梦: 由于复杂的逻辑,微小的更改可能会产生不可预测的影响。
如何修复
- 提取方法 (Extract Method): 将复杂的逻辑分解为更小的命名函数。
- 卫语句 (Guard Clauses): 使用早期返回来减少嵌套层级。
- 用多态替换条件语句 (Replace Conditional with Polymorphism): 使用对象或策略模式代替大型
switch或if/else块。
配置
yaml
rules:
complexity:
severity: medium
max_complexity: 15ESLint 规则
此检测器可作为 ESLint 规则使用,以便在编辑器中获得实时反馈。
javascript
// eslint.config.js
export default [
{
rules: {
'@archlinter/no-high-complexity': 'warn',
},
},
];详见 ESLint 集成 了解设置说明。