Boas práticas e padrões · 29 temas · 143 min de leitura
Boas práticas e padrões de projeto
SOLID, Clean Code, os padrões de projeto do GoF, injeção de dependência, Clean Architecture e testes — cada tema com diagrama animado, código antes e depois e as fontes originais.
TriCódigo limpo hoje, menos bug amanhã. Cada padrão tem diagrama e código antes e depois.
Princípios SOLID
- 5 min de leitura S — Princípio da responsabilidade única (SRP) Uma classe deve ter um só motivo para mudar: cada parte do código responde a um único "dono" da regra.
- 5 min de leitura O — Princípio aberto/fechado (OCP) Aberto para extensão, fechado para modificação: acrescente comportamento com código novo, sem mexer no que já funciona.
- 5 min de leitura L — Princípio da substituição de Liskov (LSP) Um subtipo precisa funcionar em qualquer lugar onde o tipo base funciona, sem surpresas para quem chama.
- 4 min de leitura I — Princípio da segregação de interfaces (ISP) Nenhum cliente deve depender de métodos que não usa: prefira várias interfaces pequenas a uma interface gorda.
- 6 min de leitura D — Princípio da inversão de dependência (DIP) Regras de negócio não dependem de detalhes (banco, HTTP, SDK): os dois dependem de abstrações definidas pelo negócio.
Princípios gerais
- 5 min de leitura DRY, KISS e YAGNI Três atalhos de bom senso: não repita conhecimento, prefira o simples e não construa o que ninguém pediu ainda.
- 5 min de leitura Composição em vez de herança Monte comportamento juntando objetos pequenos em vez de empilhar subclasses — mais flexível e menos frágil.
Clean Code
- 6 min de leitura Clean Code: nomes e funções Código é lido muito mais vezes do que escrito: nomes que revelam intenção e funções pequenas com um nível de abstração.
- 6 min de leitura Code smells e refatoração Sinais de que o design está piorando e as refatorações seguras que os corrigem — sempre em passos pequenos com testes verdes.
- 5 min de leitura Tratamento de erros Falhe cedo e com contexto, trate o erro na camada que sabe o que fazer com ele e nunca engula exceções.
Padrões de criação
- 5 min de leitura Factory Method e fábricas Centraliza a decisão de qual classe concreta criar, para que o resto do código dependa só da interface.
- 4 min de leitura Builder Monta objetos complexos passo a passo, com valores padrão e validação no final, sem construtores com dez parâmetros.
- 4 min de leitura Singleton (e por que usar com cuidado) Garante uma única instância de uma classe — útil para recursos caros, mas vira estado global se usado sem critério.
Padrões estruturais
- 4 min de leitura Adapter Faz uma interface incompatível (SDK, API antiga) se encaixar na interface que o seu código espera.
- 5 min de leitura Decorator Acrescenta comportamento (cache, log, retry) envolvendo um objeto com outro da mesma interface, sem mexer no original.
- 4 min de leitura Facade Oferece uma porta de entrada simples para um subsistema complicado, escondendo a ordem das chamadas.
- 4 min de leitura Proxy Um substituto com a mesma interface controla o acesso ao objeto real: carrega sob demanda, protege, guarda em cache ou chama pela rede.
Padrões comportamentais
- 4 min de leitura Strategy Encapsula algoritmos intercambiáveis atrás de uma interface, escolhidos em tempo de execução.
- 5 min de leitura Observer (e fluxos reativos) Quando um objeto muda, todos os interessados são avisados — a base de LiveData, Flow, RxJS e eventos de UI.
- 4 min de leitura Command (desfazer, filas e ações) Transforma uma ação em objeto: dá para enfileirar, registrar, refazer e desfazer.
- 5 min de leitura State e máquinas de estado Modela cada estado como um tipo, com as transições permitidas explícitas — adeus a combinações impossíveis de booleanos.
- 4 min de leitura Template Method Fixa o roteiro de um algoritmo numa classe base e deixa as subclasses preencherem só os passos que variam.
- 4 min de leitura Chain of Responsibility A requisição passa por uma corrente de manipuladores; cada um trata, altera ou repassa — como os middlewares de uma API.
Arquitetura do código
- 5 min de leitura Injeção de dependência Cada classe recebe o que precisa em vez de criar sozinha — código desacoplado, configurável e fácil de testar.
- 5 min de leitura Repository Uma coleção do domínio que esconde de onde os dados vêm — API, banco local ou cache — e decide a estratégia offline.
- 7 min de leitura Clean Architecture e hexagonal (portas e adaptadores) Regras de negócio no centro, frameworks na borda, dependências apontando sempre para dentro.
- 6 min de leitura MVVM e MVI na interface A tela só desenha um estado e envia ações; o ViewModel guarda o estado e aplica a lógica — fluxo de dados em uma só direção.
Qualidade e testes
- 6 min de leitura Pirâmide de testes e TDD Muitos testes unitários rápidos, alguns de integração e poucos de ponta a ponta — e o ciclo vermelho, verde, refatorar.
- 6 min de leitura Code review, commits e configuração (12 fatores) Mudanças pequenas, commits que contam a história, revisão focada no que importa e configuração fora do código.
Cada tema traz referências a artigos científicos, especificações e documentação oficial. Encontrou um erro? Escreva pela página de contato.