fp-pack, una utilidad funcional de TypeScript centrada en Pipe y fácil de usar en el trabajo en equipo
(github.com/superlucky84)1. Motivación: por qué lo hice
Creo que cada persona puede valorar cosas distintas como importantes dentro de la programación funcional.
Algunas personas pueden dar más importancia a la coherencia teórica, y otras a la consistencia de la abstracción.
Entre todo eso, yo siempre he sentido que
poder ver de un vistazo el flujo de datos de forma declarativa a través de pipe
es la mayor ventaja de la programación funcional.
Especialmente en entornos como JavaScript, donde el código puede volverse complejo con facilidad,
consideré que una estructura visible que permita ver de dónde vienen los datos y hacia dónde fluyen
es aún más importante en el trabajo real.
Sin embargo, al intentar aplicar este enfoque
en el trabajo práctico a nivel de equipo, con integrantes que tienen distintos niveles de comprensión de la programación,
a menudo uno se encuentra con limitaciones muy reales.
En el proceso de aplicar patrones funcionales,
los valores terminan envueltos poco a poco en estructuras cada vez más abstractas,
y aumentan los momentos en los que hay que entender reglas separadas en cada paso intermedio;
como resultado, varias veces viví la experiencia de que justamente la "legibilidad del flujo completo del pipeline" que yo consideraba tan importante
se iba perdiendo.
Últimamente, conforme las herramientas que ayudan a generar código se vuelven cada vez más sofisticadas,
también me he encontrado con frecuencia con casos en los que el diseño termina volviéndose excesivamente complejo sin querer.
Por eso, en fp-pack elegí conscientemente
una estructura que impulse, tanto a personas como a herramientas,
a escribir pipelines lo más simples posible.
fp-pack es un proyecto personal creado a partir de estas experiencias,
que pone como prioridad, más que la completitud teórica,
la legibilidad centrada en Pipe que pueda mantenerse de forma sostenible en un entorno de equipo.
Para que el manejo de efectos secundarios en lo funcional no quede limitado solo a personas familiarizadas con cierta teoría,
también introduje un método experimental de manejo de Side Effect reinterpretado con patrones fáciles de entender
(la guía relacionada está aquí 👉 https://superlucky84.github.io/fp-pack/#/ko/guide/side-effect-guide).
2. Principios clave
-
Centrado en Plain Value
Dentro del pipeline, los valores no se envuelven innecesariamente;
se mantienen tal cual como Plain Object / Plain Value
para que entender el flujo y depurar resulte intuitivo. -
Separación explícita de Side Effect
Solo en los casos en que se necesita interrupción (Early Exit) o manejo de excepciones,
se diseñó para usar un pipeline dedicado por separado. -
Curva de aprendizaje baja
Más que introducir conceptos nuevos,
está construido en torno a patrones de uso familiares comopipeypipeAsync,
para que sea fácil de compartir dentro del equipo. -
Seguridad de tipos
Aprovechando TypeScript,
permite verificar en tiempo de compilación las incompatibilidades de tipos dentro del pipeline.
3. Cierre
Incluso sin tener que aprender conceptos complejos desde cero,
espero que pueda convertirse en una opción para quienes quieran aprovechar de forma natural en el trabajo real,
en un entorno de JavaScript / TypeScript,
la principal ventaja de la programación funcional:
"código fácil de leer en cuanto al flujo de datos".
🔗 Documentación
https://superlucky84.github.io/fp-pack/#/ko
🔗 GitHub
https://github.com/superlucky84/fp-pack
1 comentarios
Pensando en una programación con un enfoque funcional que pueda usarse de forma natural por miembros del equipo con distintos perfiles, incluidos desarrolladores de nivel inicial e intermedio, sin tener que forzarlos a ajustarse a un estilo o forma de pensar en particular, sino simplemente entendiendo funciones,
pipey algo de currificación, creé fp-pack.