diff --git a/refactor.js b/refactor.js index 3e1f351..e11c537 100644 --- a/refactor.js +++ b/refactor.js @@ -2,26 +2,18 @@ function returnRandomNumber() { return Math.random(); } -function sumToRandomNumber(num) { - const numberToSum = returnRandomNumber(); +function operateRandomNumber(num, operation) { + // Número aléatorio entre 0 e 100 + const randomNumber = Math.round(returnRandomNumber() * 100); + const result = operation(randomNumber, num); - return `Seu número é ${Math.round(numberToSum * 100) + num}!`; + return `Seu número é ${result}!`; } -function subtractRandomNumber(num) { - const numberToSubtract = returnRandomNumber(); - - return `Seu número é ${Math.round(numberToSubtract * 100) - num}!`; -} - -function multiplyToRandomNumber(num) { - const numberToMultiply = returnRandomNumber(); - - return `Seu número é ${Math.round(numberToMultiply * 100) * num}!`; -} - -function divideRandomNumber(num) { - const numberToDivide = returnRandomNumber(); - - return `Seu número é ${Math.round(numberToDivide * 100) / num}!`; -} +// Para não estragarmos a interface publica, recriamos os metodos antigos com a nova mudança +// Além de diminuir a repetição de código, agora podemos também criar operações arbitrarias +// utilizando operateRandomNumber. +const sumToRandomNumber = (num) => operateRandomNumber(num, (a, b) => a + b); +const subtractRandomNumber = (num) => operateRandomNumber(num, (a, b) => a - b); +const multiplyToRandomNumber = (num) => operateRandomNumber(num, (a, b) => a * b); +const divideRandomNumber = (num) => operateRandomNumber(num, (a, b) => a / b);