Skip to content

YAGNI (You Ain't Gonna Need It)

"Você não vai precisar disso". O princípio YAGNI diz para não adicionar funcionalidades ou complexidades ao código até que elas sejam realmente necessárias. É o antídoto para a antecipação de requisitos imaginários.


1. O Problema da Antecipação

Muitas vezes pensamos: "Vou adicionar essa prop extra aqui porque talvez no futuro o designer queira mudar a cor desse botão".

O que acontece na realidade?

  1. Código Sujo: O "futuro" nunca chega e você fica com props mortas que dificultam a leitura e os testes.
  2. Abstração Errada: O requisito futuro chega, mas é diferente do que você imaginou. Agora você tem que refatorar uma solução "genérica" que na verdade é um obstáculo.

2. Como aplicar no Front-end

A. Estado Global (Redux)

Se um dado é usado apenas em uma tela, mantenha-o no componente ou no TanStack Query. Não crie um Redux Slice "só porque talvez outra tela precise".

B. Props de Componentes

Não adicione props de estilo ou comportamento "por precaução". Se o componente precisa ser azul hoje, ele só deve aceitar o que for necessário para ser azul.

C. Abstração de Funções

Não crie uma função ultra-genérica que aceita 10 parâmetros se você só tem um caso de uso hoje. Escreva uma função simples para o seu caso. Se um segundo caso aparecer, aí sim você refatora usando o princípio DRY.


3. Benefícios do YAGNI

  • Velocidade de Entrega: Você foca apenas no que entrega valor agora.
  • Base de Código Menor: Menos código significa menos bugs potenciais.
  • Refatoração Facilitada: É muito mais fácil adicionar funcionalidade a um código simples e direto do que tentar "desmanchar" uma abstração complexa e mal planejada.

4. Diferença entre YAGNI e Falta de Planejamento

YAGNI não significa não pensar no futuro, mas sim não implementar o futuro hoje. Planeje a arquitetura para que ela seja extensível (usando SOLID e SoC), mas mantenha a implementação focada no presente.

Regra de Ouro: Implemente o que foi pedido nos critérios de aceite. Se não está lá, você (provavelmente) não vai precisar disso.