¡Hola Tomás!
Te dejo algunos comentarios relacionados al ejercicio de Macowins:
- Veo que incluiste en tu README algunos ejemplos de consultar a nivel datos y te recuerdo que en esta primera mitad no nos interesa pensar en tablas ni consultar SQL (así como tampoco incluir atributos cuyo único propósito esté relacionado a eso como por ejemplo el atributo
nroDeVenta) sino que nos vamos a enfocar exclusivamente en el modelado del dominio a nivel objetos
- En general veo que optaste por guardar datos y modificarlos a lo largo del tiempo en lugar de calcularlos dinámicamente, lo cual suele agregar complejidad innecesaria en la resolución del problema y, de estar mal manejado, podría llevar a inconsistencias. Preferimos realizar los cálculos de forma dinámica cuando sea posible y reducir los métodos con efecto (por lo que tampoco sería necesario tener cosas como
modificar para el precio, liquidar para una prenda o vender para una venta.
- Algunas ideas parecen estar sobrediseñadas (por ejemplo el
ModificadorDePrecio que podría ser parte del mismo estado de la prenda) y hay otras que no tienen tanta cohesión y podrían ser delegadas a otros objetos (como la lógica de los descuentos que en realidad no aplican a todas las prendas si no solo a algunas de ellas o el método de pago que no está reificado sino que también es responsabilidad de la prenda, lo cual hace que el código sea más difícil de entender, testear y menos flexible)
¡Hola Tomás!
Te dejo algunos comentarios relacionados al ejercicio de Macowins:
nroDeVenta) sino que nos vamos a enfocar exclusivamente en el modelado del dominio a nivel objetosmodificarpara el precio,liquidarpara una prenda ovenderpara una venta.ModificadorDePrecioque podría ser parte del mismo estado de la prenda) y hay otras que no tienen tanta cohesión y podrían ser delegadas a otros objetos (como la lógica de los descuentos que en realidad no aplican a todas las prendas si no solo a algunas de ellas o el método de pago que no está reificado sino que también es responsabilidad de la prenda, lo cual hace que el código sea más difícil de entender, testear y menos flexible)