Boas práticas e padrões · 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.
Arraste para o lado para ver o diagrama inteiro.
DRY — Don’t Repeat Yourself
Do livro The Pragmatic Programmer: "todo conhecimento deve ter uma representação única". O alvo é a regra de negócio duplicada (a alíquota do INSS em três lugares), não linhas parecidas por acaso. Juntar código que só se parece cria acoplamento errado — às vezes duplicar é melhor que a abstração errada.
KISS — Keep It Simple
A solução mais simples que resolve o problema hoje. As regras de design de Kent Beck dão a ordem: passa nos testes, revela a intenção, sem duplicação, com o menor número de elementos.
YAGNI — You Aren’t Gonna Need It
Da Extreme Programming: não implemente capacidade "para o futuro". Fowler lista os custos: construir, atrasar o que importa, carregar a complexidade e, frequentemente, errar a previsão.
No código: antes e depois
// a mesma regra em três telas — e uma já ficou desatualizada
val descontoCarrinho = if (total > 200) total * 0.10 else 0.0
val descontoCheckout = if (total > 200) total * 0.10 else 0.0
val descontoEmail = if (total > 150) total * 0.10 else 0.0 // bug object Promocao {
private const val MINIMO = 200.0
private const val TAXA = 0.10
fun desconto(total: Double) = if (total > MINIMO) total * TAXA else 0.0
}
// carrinho, checkout e e-mail chamam Promocao.desconto(total) A regra mora num lugar só: mudar o mínimo de 200 para 250 é uma linha, e o bug do e-mail não acontece.
Em resumo
- DRY é sobre conhecimento, não sobre texto igual.
- Duplicação é mais barata que a abstração errada.
- KISS: a solução simples que passa nos testes.
- YAGNI: o futuro chega diferente do previsto.