Refatorando os Dry’s

imagesDon’t repeat yourself, em português: “Não repita a si mesmo” ou também conhecido pelo acrônimo DRY é um conceito de desenvolvimento de software que propõe que cada porção de conhecimento em um sistema deve possuir uma representação única, de autoridade e livre de ambiguidades em todo o sistema. Esta expressão foi cunhada por Andy Hunt e Dave Thomas em seu livro “The Pragmatic Programmer”. Ele se aplica amplamente, incluindo esquema de banco de dados, plano de teste, compilação e mesmo documentação de software. Se este conceito for aplicado, a modificação de uma parte do sistema não leva a modificações em outras partes não relacionadas. Adicionalmente, todos os elementos relacionados mudam de forma previsível e uniforme, mantendo-se, portanto, sincronizados.

Segue a linha de raciocínio básico para refatorar um dry:

Dry dentro de um método

Quanto acontecer blocos de códigos repetitivos dentro de um mesmo método, você refatora o dry em uma closure na primeira vez que o bloco acontecer e reusa invocação da closure para as próximas chamadas.

Dry dentro da uma classe

Quanto acontecer blocos de códigos repetitivos dentro de uma mesma classe, em diferentes métodos, você refatora o dry em um método privado, nomeando de acordo e reusa fazendo a invocação desse métodos em todos os outros.

Dry em varias classe

Quanto acontecer blocos de códigos repetitivos dentro de várias classes, você refatora o dry em uma classe especializada, nomeando adequadamente, de acordo com a situação. Ela pode a vir a ser uma simples classes estática utilitária ou até uma classe de instância, dentro dos blocos de construções de sua arquitetura, tudo dependendo da interpretação do projetista.

Ciclo TDD

Seguindo a ciclo básico do TDD, deixe o dry acontecer no código sem preocupação. Seja feliz por alguns momentos, copiando e colando aquele bloco de código repetitivo🙂 ! Depois que você estiver no estágio de barra verde, com os testes em dia e tudo funcionando, é que você então vai para a fase de refatoração, auditando o que foi programado, aplicando essa sequencia de passos.

Tem interesse em aprender essas técnicas? Veja nosso curso de TDD com Java.

“Ide, pois, e aprendei o que significa: Misericórdia quero, e não sacrifícios. Porque eu não vim chamar justos, mas pecadores”. Mateus 9:13