¿Qué línea viola la Law of Demeter ('habla solo con tus amigos inmediatos')?
Opciones
total = order.total() + shippingorder.customer.address.city.upper()(Opción correcta)self.repo.save(order, commit=True)count = len(items) + len(extra)
Respuesta
order.customer.address.city.upper()
Por qué
La Law of Demeter dice que un método debe hablar con sus colaboradores directos, no meterse a través de ellos en sus partes internas.
order.customer.address.city significa que tu código sabe cómo están construidos por dentro Order, Customer y Address. Si alguno cambia, tu código se rompe.
Mejor: pide lo que necesitas al objeto más cercano, por ejemplo order.shipping_city().
Recuerda
Evita cadenas largas de puntos hacia las partes internas de otros objetos.