← 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