Princípio

Cada parte do conhecimento deve ter uma representação única, não ambígua e definitva dentro do sistema.

(Andy Hunt e Dave Thomas) - O Programador Pragmático: de aprendiz a mestre

Impactos negativos

  • Código não coeso

  • Refatoração

- Aumenta dificuldades nas mudanças

  • Diminui a clareza

Vixxi...

public Posicao destinoNorte(){
   Pessoa pessoa = new Pessoa();
   pessoa.moverPara("Norte");
   return pessoa.novaPossicao();
}
 

public Posicao destinoSul(){
   Pessoa pessoa = new Pessoa();
   pessoa.moverPara("Sul");
   return pessoa.novaPossicao();
}

 
public Posicao destinoLeste(){
   Pessoa pessoa = new Pessoa();
   pessoa.moverPara("Leste");
   return pessoa.novaPossicao();
}
 

Coisa linda Fih...

public Posicao destino(String direcao){
   Pessoa pessoa = new Pessoa();
   pessoa.moverPara(direcao);
   return pessoa.novaPosicao();
}

Cuidado!

+ rapido

- coeso

ParametrosFiscaisController

Solução

Bem melhor...

Outro...

Solução...

Solução...

Qual é o limite do DRY 

Há exceções

"Não há problema ter mais que uma representação para um pedaço de conhecimento, se houver um mecanismo eficaz que garanta a consistência entre os pedaços."

(Anders Munch)

http://www.infoq.com/br/news/2012/07/DRY-acoplamento-duplicacao

Eric Guilherme

Obrigado

ericguilherme6@gmail.com

Made with Slides.com