DRY

expressão

programação

Significa: Don't Repeat Yourself

O princípio de que cada pedaço de conhecimento deve ter uma representação única e autoritativa em um sistema.

Cunhado em The Pragmatic Programmer, o DRY diz que lógica duplicada significa bugs duplicados e divergência, então você fatora a ideia compartilhada em um só lugar. Sua contrapartida é um alerta - forçar coisas diferentes a compartilhar código só porque parecem semelhantes é uma armadilha - então o DRY trata de conhecimento, não de mero texto.

Não se repita vem de The Pragmatic Programmer, e a redação original é mais cuidadosa do que a sigla sugere: cada porção de conhecimento deve ter uma representação única, inequívoca e autoritativa dentro de um sistema. O sujeito é conhecimento, não texto, e é nessa distinção que começa a maior parte da má aplicação.

Dois trechos de código que parecem idênticos mas codificam decisões diferentes não são duplicação, e fundi-los cria um acoplamento que vai doer no momento em que essas decisões divergirem. Este é o modo de falha que o DRY produz na prática: uma abstração extraída de semelhança superficial e depois contorcida com sinalizadores e casos especiais conforme os chamadores se afastam, até ficar mais difícil de ler que a duplicação que substituiu.

O contrapeso que vale conhecer é a regra de três, e a observação de que um pouco de duplicação é muito mais barato que a abstração errada. Duplicação é visível e fácil de corrigir depois; uma abstração ruim é estrutural e difícil de remover. A disciplina prática é esperar até o padrão ficar claro, perguntar se a coisa repetida representa a mesma decisão, e não os mesmos caracteres, e preferir duplicar até que a resposta seja genuinamente sim.

Também conhecido como: Don't Repeat Yourself, DRY principle

Fontes

  • Hunt & Thomas, 'The Pragmatic Programmer' (1999)

Todos os verbetes do glossário