java-refactoring-extract-method
Ajuda seu agente a melhorar o código Java, dividindo partes grandes em funções menores e mais fáceis de entender. Isso torna o código mais organizado e simples de usar.
O que ela faz
Essa ferramenta ajuda a organizar seu código Java. Ela pega pedaços de código que se repetem ou são muito longos e os transforma em funções menores e mais fáceis de entender.
Quando usar
- ✓Quando um método tem muitas linhas de código.
- ✓Quando um método faz mais de uma coisa.
- ✓Para tornar o código mais fácil de ler e reutilizar.
Exemplo do que pedir para a IA
“Transforme este método longo em partes menores e mais claras.”
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 IA identifica partes do código que podem ser separadas. Ela cria novas funções com nomes descritivos para essas partes e substitui o código original pelas chamadas dessas novas funções.
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 java-refactoring-extract-methodOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/github/awesome-copilot/main/skills/java-refactoring-extract-method/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.
Refatorando Métodos Java com Extrair Método
Papel
Você é um especialista em refatoração de métodos Java.
Abaixo estão 2 exemplos (com títulos de código antes e código após a refatoração) que representam Extrair Método.
Código Antes da Refatoração 1:
public FactLineBuilder setC_BPartner_ID_IfValid(final int bpartnerId) {
assertNotBuild();
if (bpartnerId > 0) {
setC_BPartner_ID(bpartnerId);
}
return this;
}
Código Após a Refatoração 1:
public FactLineBuilder bpartnerIdIfNotNull(final BPartnerId bpartnerId) {
if (bpartnerId != null) {
return bpartnerId(bpartnerId);
} else {
return this;
}
}
public FactLineBuilder setC_BPartner_ID_IfValid(final int bpartnerRepoId) {
return bpartnerIdIfNotNull(BPartnerId.ofRepoIdOrNull(bpartnerRepoId));
}
Código Antes da Refatoração 2:
public DefaultExpander add(RelationshipType type, Direction direction) {
Direction existingDirection = directions.get(type.name());
final RelationshipType[] newTypes;
if (existingDirection != null) {
if (existingDirection == direction) {
return this;
}
newTypes = types;
} else {
newTypes = new RelationshipType[types.length + 1];
System.arraycopy(types, 0, newTypes, 0, types.length);
newTypes[types.length] = type;
}
Map<String, Direction> newDirections = new HashMap<String, Direction>(directions);
newDirections.put(type.name(), direction);
return new DefaultExpander(newTypes, newDirections);
}
Código Após a Refatoração 2:
public DefaultExpander add(RelationshipType type, Direction direction) {
Direction existingDirection = directions.get(type.name());
final RelationshipType[] newTypes;
if (existingDirection != null) {
if (existingDirection == direction) {
return this;
}
newTypes = types;
} else {
newTypes = new RelationshipType[types.length + 1];
System.arraycopy(types, 0, newTypes, 0, types.length);
newTypes[types.length] = type;
}
Map<String, Direction> newDirections = new HashMap<String, Direction>(directions);
newDirections.put(type.name(), direction);
return (DefaultExpander) newExpander(newTypes, newDirections);
}
protected RelationshipExpander newExpander(RelationshipType[] types,
Map<String, Direction> directions) {
return new DefaultExpander(types, directions);
}
Tarefa
Aplique Extrair Método para melhorar a legibilidade, testabilidade, manutenibilidade, reutilização, modularidade, coesão, baixo acoplamento e consistência.
Sempre retorne um método completo e compilável (Java 17).
Execute etapas intermediárias internamente:
- Primeiro, analise cada método e identifique aqueles que excedem os limites:
- LOC (Linhas de Código) > 15
- NOM (Número de Declarações) > 10
- CC (Complexidade Ciclomática) > 10
- Para cada método qualificado, identifique blocos de código que podem ser extraídos para métodos separados.
- Extraia pelo menos um novo método com um nome descritivo.
- Saída apenas o código refatorado dentro de um único bloco
java. - Não remova nenhuma funcionalidade do método original.
- Inclua um comentário de uma linha acima de cada novo método descrevendo seu propósito.
Código a ser Refatorado:
Agora, avalie todos os métodos com alta complexidade e refatore-os usando Extrair Método
Perguntas frequentes
Por que organizar o código?
Código organizado é mais fácil de ler, encontrar erros e adicionar novas funcionalidades no futuro.
O que é 'refatorar'?
Refatorar é melhorar a estrutura interna do código sem mudar o que ele faz externamente.
O que é 'Extract Method'?
É uma técnica específica de refatoração onde um bloco de código é extraído para um novo método.
Detalhes
Descrição original do autor
Refactoring using Extract Methods in Java Language
repo: github/awesome-copilot
Popularidade
- Estrelas no GitHub
- 40 mil
- Posição no ranking
- #5201
- 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