Pular para o conteúdo
Skillpedia
Código em geral280 mil · #66

java-coding-standards

Faz seu agente seguir padrões de codificação Java para Spring Boot e Quarkus. Garante que o código seja organizado e siga as convenções específicas.

O que ela faz

Este código ajuda a garantir que seu código Java siga as melhores práticas e convenções, especialmente quando você usa os frameworks Spring Boot ou Quarkus. Ele verifica coisas como nomes de variáveis, como os dados são armazenados e como os erros são tratados.

Quando usar

  • ✓Ao escrever código Java para projetos Spring Boot ou Quarkus.
  • ✓Quando você quer garantir que seu código seja fácil de ler e manter.
  • ✓Ao revisar o código de outra pessoa para verificar se segue as regras.

Exemplo do que pedir para a IA

“Verifique se este código Java para Spring Boot segue as convenções de nomenclatura e imutabilidade.”

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/affaan-m/ECC/blob/main/pi/core/skills/java-coding-standards/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/affaan-m/ECC/blob/main/pi/core/skills/java-coding-standards/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

Ele analisa seu código e o compara com um conjunto de regras pré-definidas para os frameworks Spring Boot e Quarkus. Se algo não estiver de acordo, ele sugere a maneira correta.

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 affaan-m/ECC --skill java-coding-standards

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/affaan-m/ECC/main/pi/core/skills/java-coding-standards/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.

Padrões de Código Java

Padrões para código Java (17+) legível e de fácil manutenção em serviços Spring Boot e Quarkus.

Quando Usar

  • Escrevendo ou revisando código Java em projetos Spring Boot ou Quarkus
  • Aplicando convenções de nomenclatura, imutabilidade ou tratamento de exceções
  • Trabalhando com records, sealed classes ou pattern matching (Java 17+)
  • Revisando o uso de Optional, streams ou generics
  • Estruturando pacotes e layout do projeto
  • [QUARKUS]: Trabalhando com escopos CDI, entidades Panache ou pipelines reativos

Como Funciona

Detecção de Framework

Antes de aplicar os padrões, determine o framework a partir do arquivo de build:

  • Arquivo de build contém quarkus → aplique convenções [QUARKUS]
  • Arquivo de build contém spring-boot → aplique convenções [SPRING]
  • Nenhum detectado → aplique apenas convenções compartilhadas

Princípios Fundamentais

  • Prefira clareza à esperteza
  • Imutável por padrão; minimize o estado mutável compartilhado
  • Falhe rapidamente com exceções significativas
  • Nomenclatura e estrutura de pacotes consistentes
  • [QUARKUS]: Prefira processamento em tempo de compilação em vez de em tempo de execução; evite reflexão em tempo de execução sempre que possível

Exemplos

As seções abaixo mostram exemplos concretos de Spring Boot, Quarkus e Java compartilhados para nomenclatura, imutabilidade, injeção de dependência, código reativo, exceções, layout de projeto, logging, configuração e testes.

Nomenclatura

// PASS: Classes/Records: PascalCase
public class MarketService {}
public record Money(BigDecimal amount, Currency currency) {}

// PASS: Methods/fields: camelCase
private final MarketRepository marketRepository;
public Market findBySlug(String slug) {}

// PASS: Constants: UPPER_SNAKE_CASE
private static final int MAX_PAGE_SIZE = 100;

// PASS: [QUARKUS] JAX-RS resources named as *Resource, not *Controller
public class MarketResource {}

// PASS: [SPRING] REST controllers named as *Controller
public class MarketController {}

Imutabilidade

// PASS: Favor records and final fields
public record MarketDto(Long id, String name, MarketStatus status) {}

public class Market {
  private final Long id;
  private final String name;
  // getters only, no setters
}

// PASS: [QUARKUS] Panache active-record entities use public fields (Quarkus convention)
@Entity
public class Market extends PanacheEntity {
  public String name;
  public MarketStatus status;
  // Panache generates accessors at build time; public fields are idiomatic here
}

// PASS: [QUARKUS] Panache MongoDB entities
@MongoEntity(collection = "markets")
public class Market extends PanacheMongoEntity {
  public String name;
  public MarketStatus status;
}

Uso de Optional

// PASS: Return Optional from find* methods
// [SPRING]
Optional<Market> market = marketRepository.findBySlug(slug);

// [QUARKUS] Panache
Optional<Market> market = Market.find("slug", slug).firstResultOptional();

// PASS: Map/flatMap instead of get()
return market
    .map(MarketResponse::from)
    .orElseThrow(() -> new EntityNotFoundException("Market not found"));

Melhores Práticas de Streams

// PASS: Use streams for transformations, keep pipelines short
List<String> names = markets.stream()
    .map(Market::name)
    .filter(Objects::nonNull)
    .toList();

// FAIL: Avoid complex nested streams; prefer loops for clarity

Injeção de Dependência

// PASS: [SPRING] Constructor injection (preferred over @Autowired on fields)
@Service
public class MarketService {
  private final MarketRepository marketRepository;

  public MarketService(MarketRepository marketRepository) {
    this.marketRepository = marketRepository;
  }
}

// PASS: [QUARKUS] Constructor injection
@ApplicationScoped
public class MarketService {
  private final MarketRepository marketRepository;

  @Inject
  public MarketService(MarketRepository marketRepository) {
    this.marketRepository = marketRepository;
  }
}

// PASS: [QUARKUS] Package-private field injection (acceptable in Quarkus — avoids proxy issues)
@ApplicationScoped
public class MarketService {
  @Inject
  MarketRepository marketRepository;
}

// FAIL: [SPRING] Field injection with @Autowired
@Autowired
private MarketRepository marketRepository; // use constructor injection

// FAIL: [QUARKUS] @Singleton when interception or lazy init is needed
@Singleton // non-proxyable — use @ApplicationScoped instead
public class MarketService {}

Padrões Reativos [QUARKUS]

// APROVADO: Retorna Uni/Multi de endpoints reativos
@GET
@Path("/{slug}")

…
Perguntas frequentes

O que são 'convenções de nomenclatura'?

São regras sobre como nomear variáveis, funções e classes para que o código seja mais fácil de entender. Por exemplo, em Java, nomes de classes geralmente começam com letra maiúscula.

O que é 'imutabilidade'?

Significa que um dado, uma vez criado, não pode ser alterado. Usar dados imutáveis torna o código mais seguro e previsível.

Por que ele diferencia Spring Boot e Quarkus?

Porque cada um desses frameworks tem suas próprias regras e melhores práticas específicas que precisam ser seguidas para obter o melhor desempenho e manutenibilidade.

Detalhes

Descrição original do autor

Java coding standards for Spring Boot and Quarkus services: naming, immutability, Optional usage, streams, exceptions, generics, CDI, reactive patterns, and project layout. Automatically applies framework-specific conventions. Use when writing or reviewing Java in a Spring Boot or Quarkus service.

repo: affaan-m/ECC

Popularidade

Estrelas no GitHub
280 mil
Posição no ranking
#66
Licença
MIT
Atualizada em
15/10/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas