Closed lmoliveto closed 2 months ago
Hola @lmoliveto Tenemos que evitar estar seteando estado interno en un enum. No es un buen diseño que el enum tenga una variable de instancia que vos seteás desde afuera. Además el hecho de hacer
type.setPromotion(coffeeRewards.getPromotion());
points += type.calculatePoints(amount);
te indica que en realidad podría ser un único método publico que hace las dos cosas. Mejor recibilo por parámetro como está planteado en la solución.
Respecto a la numeración está bien. La diferencia que veo es que tenés el 1001 directamente (como un magic number) mientras que en la solución declara una constante. Acordate que si tiene el modificador static y final es porque está definiendo una constante.
Lo demás lo veo muy bien.
Entonces está bien tener el magic number? O sería mejor tener una constante por separado para inicializar la variable que después aumento?
No, siempre es mejor tener una constante
Hola! En el enum creé dos métodos: uno para setear la promoción actual y otro para calcular los puntos. Y guardo el valor original de la promoción y el actual en variables de instancia, para así no perder el original y aplicar sobre él las nuevas promociones. Y desde CoffeeCard invoco primero a la función para setear la actual promoción y luego a la función para calcular los puntos. En la solución hace todo con un método sobre el valor original de la promoción.
Otra diferencia que hay entre mi código y el de la respuesta es que yo no guardé el valor inicial del id en CoffeeRewards. Cuando aumenta para la próxima CoffeeCard lo hace sobre la misma variable.
Quería saber si está mal haberlo hecho de esta forma.