Alta Complexidade (High Complexity)
ID: complexity | Gravidade: Média (padrão)
Este detector identifica funções com alta Complexidade Ciclomática.
Por que isso é um smell
- Difícil de Entender: Muitos caminhos de ramificação tornam o código difícil de seguir.
- Propenso a Bugs: Maior chance de esquecer casos de borda durante os testes.
- Pesadelo de Manutenção: Pequenas mudanças podem ter efeitos imprevisíveis devido à lógica complexa.
Como corrigir
- Extrair Método (Extract Method): Divida a lógica complexa em funções menores e nomeadas.
- Cláusulas de Guarda (Guard Clauses): Use retornos antecipados para reduzir os níveis de aninhamento.
- Substituir Condicional por Polimorfismo: Use objetos ou estratégias em vez de grandes blocos
switchouif/else.
Configuração
yaml
rules:
complexity:
severity: medium
max_complexity: 15Regra ESLint
Este detector está disponível como uma regra ESLint para feedback em tempo real no seu editor.
javascript
// eslint.config.js
export default [
{
rules: {
'@archlinter/no-high-complexity': 'warn',
},
},
];Veja Integração ESLint para instruções de configuração.