Closed maurociancio closed 2 years ago
No es necesario porque la forma de crear ordenes es instanciándolas a través del OrderBuilder, y éste es el que tiene la lógica de cuál es la manera válida de crear la orden
mmmm no me cierra del todo. xq no usar el connstructor que es el lugar ideal para validar si se puede o no construir eso? xq necesitar de un builder cuando un constructor alcanza.
por otro lado:
Order order = new Order(
lender: item.lenderId,
borrower: borrowerId,
createdAt: now(),
item: item,
status: OPEN
)
if (!order.isValid()) {
throw new InvalidRenterException("The borrower ${order.getBorrower()} can't be the owner of the ${order.getItem().getId()} item")
}
order
xq permitir la construccion de un objeto y luego preguntarle si es valido? xq no directamente lanzar la excepcion en el constructor? poder construir un objeto y que ese objeto este en un estado invalido complica un poco las cosasa
Es verdad tiene sentido. Destrui el builder de la orden y ahora el constructor realiza todas las validaciones https://github.com/jorgejcabrera/rent-app-service/blob/master/src/main/groovy/com/fiuba/rent_app/domain/order/Order.groovy#L52.
Quizas hubiese tenido mas sentido el builder si la logica de creacion del objeto hubiera sido mas compleja y el constructor de la clase privado -de manera tal que solo se instancien objetos a traves del builder.
https://github.com/jorgejcabrera/rent-app-service/blob/ddadfd7c56b660e1e14153d27e7b528f4e45ce31/src/main/groovy/com/fiuba/rent_app/domain/order/Order.groovy#L67