refactor-method-complexity-reduce
Ajuda seu agente a simplificar métodos complexos no código. Ele extrai partes do código para criar métodos menores e mais fáceis de entender.
O que ela faz
Essa ferramenta ajuda a simplificar um trecho de código complicado, dividindo-o em partes menores e mais fáceis de entender. O objetivo é tornar o código mais legível e fácil de manter.
Quando usar
- ✓Quando um trecho de código está muito longo e difícil de ler.
- ✓Se você precisa entender ou modificar um código escrito por outra pessoa.
- ✓Para melhorar a qualidade geral do código antes de adicioná-lo a um projeto.
Exemplo do que pedir para a IA
“Simplifique este método chamado 'processarDadosDoUsuario' para que sua complexidade seja no máximo 10.”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
A ferramenta analisa o código para encontrar partes complexas, como muitas condições ou repetições. Em seguida, ela cria novas funções menores para cada parte complexa e atualiza o código original para chamar essas novas funções, mantendo tudo funcionando como antes.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add github/awesome-copilot --skill refactor-method-complexity-reduceOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/github/awesome-copilot/main/skills/refactor-method-complexity-reduce/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
Refatorar Método para Reduzir Complexidade Cognitiva
Objetivo
Refatorar o método ${input:methodName}, para reduzir sua complexidade cognitiva para ${input:complexityThreshold} ou menos, extraindo a lógica em métodos auxiliares focados.
Instruções
Analisar o método atual para identificar fontes de complexidade cognitiva:
- Declarações condicionais aninhadas
- Múltiplas cadeias if-else ou switch
- Blocos de código repetidos
- Múltiplos loops com condições
- Expressões booleanas complexas
Identificar oportunidades de extração:
- Lógica de validação que pode ser extraída para um método separado
- Processamento específico de tipo ou caso que se repete
- Transformações ou cálculos complexos
- Padrões comuns que aparecem várias vezes
Extrair métodos auxiliares focados:
- Cada auxiliar deve ter uma responsabilidade única e clara
- Extrair validação para métodos
Validate*separados - Extrair lógica específica de tipo para métodos manipuladores (handlers)
- Criar métodos utilitários para operações comuns
- Usar níveis de acesso apropriados (static, private, async)
Simplificar o método principal:
- Reduzir a profundidade de aninhamento
- Substituir cadeias if-else massivas por chamadas orquestradas menores
- Usar instruções switch onde apropriado para um despacho mais limpo
- Garantir que o método principal seja lido como um fluxo de alto nível
Preservar a funcionalidade:
- Manter o mesmo comportamento de entrada/saída
- Manter toda a validação e tratamento de erros
- Preservar tipos de exceção e mensagens de erro
- Garantir que todos os parâmetros sejam passados corretamente para os auxiliares
Melhores práticas:
- Tornar métodos auxiliares estáticos quando eles não precisam de estado de instância
- Usar verificações de nulo (null checks) e cláusulas de guarda (guard clauses) cedo
- Evitar a criação de variáveis locais desnecessárias
- Considerar o uso de tuplas para múltiplos valores de retorno
- Agrupar métodos auxiliares relacionados
Abordagem de Implementação
- Extrair métodos auxiliares antes de refatorar o fluxo principal
- Testar incrementalmente para garantir que não haja regressões
- Usar nomes significativos que descrevam a responsabilidade extraída
- Manter métodos extraídos próximos a onde são usados
- Considerar transformar padrões de código repetidos em métodos genéricos
Resultado
O método refatorado deve:
- Ter a complexidade cognitiva reduzida para o limite alvo de
${input:complexityThreshold}ou menos - Ser mais legível e de fácil manutenção
- Ter clara separação de responsabilidades
- Ser mais fácil de testar e depurar
- Reter toda a funcionalidade original
Testes e Validação
CRÍTICO: Após completar a refatoração, você DEVE:
- Executar todos os testes existentes relacionados ao método refatorado e sua funcionalidade circundante
- MANDATÓRIO: Verificar explicitamente se os resultados dos testes mostram "failed=0"
- NUNCA assuma que os testes passaram - sempre examine a saída real dos testes
- Procure pela linha de resumo contendo as contagens de aprovação/falha (ex: "passed=X failed=Y")
- Se o resumo mostrar qualquer número diferente de "failed=0", os testes FALHARAM
- Se a saída dos testes estiver em um arquivo, leia o arquivo inteiro para localizar e verificar a contagem de falhas
- Executar testes NÃO é o mesmo que verificar se os testes passaram
- Não prossiga até que você tenha confirmado explicitamente zero falhas
- Se algum teste falhar (failed > 0):
- Declare claramente quantos testes falharam
- Analise cada falha para entender qual funcionalidade foi quebrada
- Causas comuns: tratamento de nulo, verificações de coleção vazia, erros na lógica condicional
- Identifique a causa raiz no código refatorado
- Corrija o código refatorado para restaurar o comportamento original
- Re-execute os testes e verifique "failed=0" na saída
- Repita até que todos os testes passem (failed=0)
- Verificar a compilação - Certifique-se de que não há erros de compilação
- Verificar a complexidade cognitiva - Confirme se a métrica está no limite alvo de
${input:complexityThreshold}ou abaixo
Checklist de Confirmação
- O código compila sem erros
- Os resultados dos testes declaram explicitamente "failed=0" (verificado pela leitura da saída)
- Todas as falhas de teste foram analisadas e corrigidas (se ocorreram)
- A complexidade cognitiva está no limite alvo de
${input:complexityThreshold}ou abaixo - Toda a funcionalidade original foi preservada
- O código segue as convenções e padrões do projeto
Perguntas frequentes
O que é 'complexidade cognitiva'?
É uma medida de quão difícil é para um humano entender um trecho de código. Quanto menor o número, mais fácil é de ler e entender.
O código vai parar de funcionar?
Não. A ferramenta garante que o código continue fazendo exatamente a mesma coisa. Ela também verifica se todos os testes existentes passam após a modificação.
O que são 'métodos auxiliares'?
São pequenas funções criadas pela ferramenta para realizar uma tarefa específica, ajudando a simplificar a função principal.
Detalhes
Descrição original do autor
Refactor given method `${input:methodName}` to reduce its cognitive complexity to `${input:complexityThreshold}` or below, by extracting helper methods.
repo: github/awesome-copilot
Popularidade
- Estrelas no GitHub
- 40 mil
- Posição no ranking
- #5337
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
acquire-codebase-knowledge
Ajuda seu agente a entender e documentar um projeto de código existente. É útil para novas pessoas entrarem no projeto ou para ter uma visão geral da arquitetura.
github/awesome-copilot
acreadiness-assess
Faz seu agente avaliar a prontidão de um projeto para IA e gerar um relatório. É útil para entender o quão bem um projeto está preparado para usar ferramentas de IA.
github/awesome-copilot
acreadiness-generate-instructions
Ajuda seu agente a criar instruções para ferramentas de IA baseadas em uma avaliação. É útil para melhorar a forma como a IA interage com o código e fecha lacunas identificadas.
github/awesome-copilot
acreadiness-policy
Faz seu agente ajudar a definir ou aplicar políticas para avaliação de projetos de IA. É útil para padronizar a forma como os projetos são avaliados e garantir conformidade.
github/awesome-copilot
Skills parecidas
benchmark-optimization-loop
Faz seu agente melhorar a velocidade de algo de forma medida. Ele testa várias versões e escolhe a mais rápida que ainda funciona corretamente.
affaan-m/ECC
change-impact
Ajuda seu agente a analisar o impacto de mudanças no código antes de fazê-las. Ele compara o planejado com o real depois, cobrindo caminhos, dados, testes e documentação. É útil para mudanças arriscadas ou que afetam várias partes do sistema.
affaan-m/ECC
click-path-audit
Faz seu agente rastrear todos os botões e interações do usuário para achar bugs. Ele encontra problemas onde funções parecem funcionar sozinhas, mas falham juntas. Útil quando bugs persistem mesmo após depuração.
affaan-m/ECC