Pular para o conteúdo
Skillpedia
Código em geral40 mil · #5201

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

https://github.com/github/awesome-copilot/blob/main/skills/java-refactoring-extract-method/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/github/awesome-copilot/blob/main/skills/java-refactoring-extract-method/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
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-method

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/github/awesome-copilot/main/skills/java-refactoring-extract-method/SKILL.md -o SKILL.md
Conteú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

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas