DRY pra toda vida
Olá amiguinhos, hoje vamos falar sobre um princípio maroto com o acrônimo DRY (Don’t Repeat Yourself).
Vou começar explicando esse princípio com uma analogia simples que me veio na cabeça agora.
O problema da repetição
Imagine que você tem duas filhas (que é o meu caso) e agora você precisa informar elas que a partir da data de hoje elas passarão a receber mesada, então você chama a filha nº 1 para informar ela que a partir de hoje ela vai começar receber mesada.
Em seguida você chama a filha nº 2 para informá-la que ela também passará a receber mesada a partir de hoje.
Considerando que o contexto e as ‘variáveis’ são similares, não seria bem mais simples chamar as duas filhas uma única vez e proferir a informação? Ambas juntas seriam notificadas e tudo estaria estupidamente claro! Nesse ponto já entro em outro princípio que futuramente abordarei aqui. (KISS - Keep it simple stupid).
Pare de ser repetitivo e seja objetivo
Essa analogia simples descrita acima foi basicamente para exemplificar casos do cotidiano que involuntariamente ocorrem na vida do desenvolvedor, a maldita repetição.
Estudo de caso
Abaixo vou compartilhar um exemplo básico de duplicidade de código (em c#) e em seguida apresento uma simples solução.
Basicamente o código irá imprimir na tela: ‘Hello!’, ‘Goodbye!’ e ‘Hello! Welcome!’.
//my methods...
string SayHello() => "Hello!";
string SayGoodbye() => "Goodbye!";
string SayHelloWelcome() => "Hello! Welcome!";
void Prophesy(){
//Hello!
Console.WriteLine(SayHello());
//Goodbye!
Console.WriteLine(SayGoodbye());
//Hello! Welcome!!
Console.WriteLine(SayHelloWelcome());
}
//go go go!
Prophesy();
Agora, abaixo uma pequena refatoração para o código ‘não se repetir’.
//my methods...
string SayHello() => "Hello!";
string SayGoodbye() => "Goodbye!";
string SayHelloWelcome() => $"{SayHello()} Welcome!";
//...
Não se repita amiguinho
Conforme o exemplo ‘mamão com açucar’ listado acima, não há menor necessidade de reescrever a mesma palavra ‘Hello!’ duas vezes, sendo que apenas um método gerando-a já irá atender a outro método.
Creio que deu pra ter uma boa idéia de poder abstrair a essência desse princípio maroto né! =)
Claro que fui bem simplista na minha analogia e exemplo, porém reforço aqui que para mantermos nosso código com qualidade, alta legibilidade e excelência é fundamental estar com esse princípio fresquinho na mente diariamente.