Inmutabilidad, vale la pena? #121
-
Hola! Basicamente esa es la consulta. Saludos 😃 ! |
Beta Was this translation helpful? Give feedback.
Replies: 4 comments
-
Hola! Como todo en esta Hablar de hacer "el diseño" inmutable, como si de un todo completo se hablara, es algo peligroso y confuso. Es como decir "Voy a hacer mi diseño simple". Sí, tal vez esté bueno que busques privilegiar esa cualidad, pero recordemos que en DDS nunca hablamos de absolutos. Siempre de "más o menos que". Con la inmutabilidad, si bien no es una cualidad de diseño per se, es cierto que suele traer aparejadas otras que sí lo son, y si bien no es cualitativamente regulable (no sé si tendría sentido hablar de que algo sea 'medio inmutabe') sí lo es en forma cuantitativa (puedo hacer muchos objetos inmutables, o pocos, o algunos). Y eso es lo que deberías regular. Muy probablemente, si intentás forzar 100% de inmutabilidad en un lenguaje como Java que tiene muchas nociones de objetos e imperativas, que descansan fuerte sobre el efecto de lado, vayas a comprarte un problema y sufras mucho al pedo, porque en muchos casos los beneficios van a ser nulos. Sí es una buena idea tal vez apenas modeles una clase, tratar de arrancar pensándola como inmutable, no ponerle setters y recién cuando veas la necesidad de mutarla preguntarte: "Qué alterntivas tengo?" "Qué pierdo?" "Qué gano"?. Probablemente si estás pensando en mutar un atributo para almacenar valores intermedios de un procesamiento interno, sea una pésima idea, porque harías tu código más dependiente el orden, mas interacoplado y menos claro de seguir (y ni hablemos de si llega a haber problemas de concurrencia :P). Ahora si el dominio dice "El usuario debe poder editar el medio de pago de la venta". Muy probablemente sea infinito más fácil mutar la referencia que crear una nueva venta que apunte a otro medio de pago. Respecto de las colecciones per se, si usas la API de streams de Java ( Por último, respecto del tema, si llegan a ver algo de Espero haber sido de ayuda (aunque básicamente dije "Ni idea, depende, fijate", pero bueno, ese es el tema con esta materia xD) Saludos! |
Beta Was this translation helpful? Give feedback.
-
@Guernik te sirvio ? |
Beta Was this translation helpful? Give feedback.
-
Hola, sí, perdón que lo dejé colgado. Sí me sirvió. Basicamente la respuesta es "depende" 🤣 |
Beta Was this translation helpful? Give feedback.
-
Exacto ;) Cierro el issue entonces. |
Beta Was this translation helpful? Give feedback.
Hola!
Como todo en esta
materiavida, dependeHablar de hacer "el diseño" inmutable, como si de un todo completo se hablara, es algo peligroso y confuso. Es como decir "Voy a hacer mi diseño simple". Sí, tal vez esté bueno que busques privilegiar esa cualidad, pero recordemos que en DDS nunca hablamos de absolutos. Siempre de "más o menos que". Con la inmutabilidad, si bien no es una cualidad de diseño per se, es cierto que suele traer aparejadas otras que sí lo son, y si bien no es cualitativamente regulable (no sé si tendría sentido hablar de que algo sea 'medio inmutabe') sí lo es en forma cuantitativa (puedo hacer muchos objetos inmutables, o pocos, o algunos). Y eso es lo que debería…