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?
- Código Sujo: O "futuro" nunca chega e você fica com props mortas que dificultam a leitura e os testes.
- 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.