Skip to content

Latest commit

 

History

History
90 lines (69 loc) · 8.39 KB

File metadata and controls

90 lines (69 loc) · 8.39 KB

Java

Java Spring Boot

Java é uma linguagem de tipagem estática e orientada a objetos, com foco em legibilidade e segurança. Os princípios deste guia (nomes expressivos, guard clauses, métodos pequenos, fluxo linear) valem direto no Java moderno, que traz records, pattern matching (casamento de padrões) e virtual threads (threads leves que a JVM cria aos milhares).

Referência rápida: nomenclatura, verbos, taboos, tipos, controle de fluxo

Setup

Configuração inicial de um projeto Java: estrutura, build e pipeline.

Tópico Conceitos
Security Secrets, env vars, Spring Security, JWT
Project Foundation Gradle, estrutura de pacotes, DI, config

Fundamentos

Tópico Conceitos
Variables final por padrão, records, constantes, valores mágicos
Naming PascalCase, camelCase, UPPER_SNAKE_CASE, ordem semântica
Methods Tamanho, top-down, direct return, parâmetros
Types Records, sealed classes, enums, generics
Control Flow Guard clauses, early return, pattern matching, streams
Visual Density Agrupamento de linhas, return separado, fases de método

Avançados

Tópico Conceitos
Error Handling Exceções tipadas, try-with-resources, limites
Async Virtual threads, CompletableFuture, Loom
Testing JUnit 6, AssertJ, Mockito, AAA
Performance Streams vs loops, pré-alocação, String building
Observability SLF4J, Logback, Micrometer, MDC, correlationId
Validation Jakarta Bean Validation, limites, custom
Null Safety Optional, Objects.requireNonNullElse, guard
Dates java.time, UTC, ISO 8601, DateTimeFormatter
Entity Modeling record para IDs, sealed interface, Optional em retorno, factory estática
Quick Reference Nomenclatura, verbos, taboos

Frameworks

Tópico Conceitos
Spring Boot @RestController, DI, Spring Data JPA, @ControllerAdvice, paginação

Princípios

Forma: estrutura e narrativa do método

Princípio Descrição
Escrita em inglês Código universal, nomes curtos e sem ambiguidade
Código narrativo O código conta a história, sem precisar de comentários
Ponto de entrada limpo Chamada de uma linha: diz o quê, esconde o como
Estilo vertical Até 3 parâmetros por linha; 4+ usa record ou builder
Orquestrador no topo Chamada visível antes dos detalhes (top-down)
Sem lógica no retorno Saída de uma linha: o retorno nomeia o resultado, não o computa

Legibilidade: fluxo, densidade visual e nomes

Princípio Descrição
Retorno antecipado Saída cedo na falha, sem else após return
Fluxo linear Aninhamento em cascata substituído por fluxo plano
Baixa densidade visual Linhas relacionadas juntas, grupos separados por uma linha em branco
Nomes expressivos Variáveis e métodos que dispensam explicação
Código como documentação Nomes substituem comentários; comentários mentem
Sem valores mágicos Constantes nomeadas no lugar de números e strings soltos

Controle de qualidade: estado, erros, async e testes

Princípio Descrição
Métodos pequenos Uma responsabilidade, um nível de abstração
Cálculo vs formatação Computar dados e formatar saída em métodos separados
Final por padrão final primeiro, variável mutável só quando necessário
CQS Separar comando de consulta, sem efeitos colaterais ocultos
Falhar rápido Validar cedo, interromper fluxo inválido
Contratos consistentes Respostas padronizadas, sempre o mesmo formato
I/O assíncrono Virtual threads, sem prender a thread à toa
Testes estruturados AAA: fases explícitas; assert limpo, sem expressão inline