O princípio DRY - conceitos e exemplos
Você conhece o princípio DRY?
O princípio DRY ou "Don't Repeat Yourself", tem como objetivo evitar a repetição de código em seu projeto. Isso possibilita que seu projeto seja mais limpo e de maior qualidade, matém seu código mais fácil de realizar manutenções, aproveitando lógicas e muitas vezes evitando o retrabalho.
- Exemplo:
function sum(firstNumber, secondNumber){
const firstNumberTimesTwo = firstNumber * 2;
return firstNumberTimesTwo + secondNumber;
}
function subtract(firstNumber, secondNumber){
const firstNumberTimesTwo = firstNumber * 2;
return firstNumberTimesTwo - secondNumber;
}
console.log(sum(5,5));
//Result 15
console.log(subtract(5,5));
//Result 5
- Perceba que no código acima eu tenho duas funções, uma que soma 2 números e outra que subtrai. Perceba que em ambos os casos o "firstNumberTimesTwo" é multiplicado por 2. veja agora como isso ficaria um pouco melhor:
function sum(firstNumber, secondNumber){
return firstNumberTimesTwo + secondNumber;
}
function subtract(firstNumber, secondNumber){
return firstNumberTimesTwo - secondNumber;
}
const numberOne = 5;
const numberTwo = 5;
const numberToBeMultiplied = 2;
const firstNumberTimesTwo = numberOne * numberToBeMultiplied;
console.log(sum(firstNumberTimesTwo,numberTwo));
//Result 15
console.log(subtract(firstNumberTimesTwo,numberTwo));
//Result 5
- Agora nesse código podemos perceber duas melhorias:
-
O "firstNumberTimesTwo" agora está sendo feito fora das funções, e caso eu precise alterar a multiplicação por 3, por exemplo, eu não preciso mexer nas funções apenas alterar o valor em um único lugar e as funções terão os parâmetros corretamente.
-
Percebam que foram criadas as constantes numberOne, numberTwo e numberToBeMultiplied, com isso sempre que eu precisar alterar os valores que quero testar nas minhas funções, eu altero apenas o valor das constantes e a funções vão receber os valores desejados, inclusive o "firstNumberTimesTwo".
Com pequenas funcionalidades pode parecer não fazer diferença, mas isso em grande escala começa a se tornar péssimo. Imagine que você tenha que implementar as funções de multiplicação e divisão recebendo os mesmos valores. Se fosse utilizando o primeiro exemplo, você teria mais linhas de códigos e sempre que testasse valores diferentes, teria que substituí-los em todas as chamadas de funções.
Utilizando o DRY, sem dúvidas terá grande aliado do clean code e facilitará muito a legibilidade do seu código.
Espero que tenha contribuído! Valeus galera até a próxima :)