← Proyectos y patrones
Functional Core, Imperative Shell
Concentrar reglas puras y deterministas en el núcleo, dejando I/O y efectos secundarios en los bordes.
Qué resuelve
El núcleo recibe datos y devuelve decisiones sin depender de reloj, red, base de datos o estado global.
El shell traduce entradas, ejecuta efectos y persiste resultados; esto permite tests rápidos y deterministas.
Cuándo tiene sentido
En dominios con reglas complejas, cálculos y decisiones que pueden expresarse como transformaciones de datos.
Complementa DDD y Result Pattern sin exigir adoptar un lenguaje funcional completo.
Compensaciones
Requiere diseñar explícitamente modelos de entrada y salida y evitar filtrar objetos de infraestructura hacia el núcleo.
No todos los efectos pueden eliminarse; el objetivo es hacer su frontera visible y comprobable.
Comentarios