Una vez leí que un método debería tener un valor de retorno (y ser referencialmente transparente) o tener efectos secundarios, pero no ambos. No puedo encontrar ninguna referencia a esta regla, pero quiero obtener más información al respecto.
¿Cuál es el origen de este consejo? ¿De qué persona o comunidad surgió?
Crédito adicional: ¿Cuál es el beneficio reclamado de seguir este consejo?
language-agnostic
history
side-effect
pure-function
Wayne Conrad
fuente
fuente
Respuestas:
Según Greg Young, esta idea se originó a partir de Bertrand Meyer : separación entre comando y consulta .
En el diseño impulsado por dominio, esto es similar a la separación / segregación comando-consulta-lectura (CQRS), como lo nombra Greg Young.
Greg Young tomó la idea de CQS de Bertrand para nombrar CQRS como lo menciona Martin Fowler en este artículo de CQRS
Beneficios
Lea el artículo en el enlace de Martin Fowler para más información.
fuente
No sé de dónde viene, pero es un buen consejo y bastante sencillo de entender.
Cualquier programa diseñado de manera sensata se dividirá en varias partes, combinadas y compuestas de varias maneras. Cuanto más difícil sea razonar sobre lo que hace una parte en particular, más difícil será asegurarse de que su programa reaccionará de manera predecible.
Aislar las partes que producen efectos secundarios hace que el resto sea más fácil de razonar, probar y depurar. Reducir el número de efectos secundarios en cada parte que genera un efecto secundario hará que esa parte sea más fácil de trabajar de la misma manera.
Si lo descompone aún más, un valor de retorno es un efecto. Los efectos secundarios son un efecto. Una función solo debería producir 1 efecto (si es posible) porque cuanto mayor sea el número de entradas y efectos que tenga una función, mayor será la dificultad de razonar sobre lo que realmente hace.
fuente
Uno de los beneficios de separar el valor de retorno de los efectos secundarios es que elimina un problema potencial que puede ser causado por la evaluación de cortocircuito .
fuente