Acabo de comenzar con la programación funcional (con JavaScript y Node.js) y, por lo que parece, parece que el código que estoy escribiendo sería una base de código increíble para administrar, en comparación con los lenguajes de programación que tienen un tipo de paradigma orientado a objetos.
Con OOP estoy familiarizado con las prácticas que garantizarían que su código se pueda administrar y ampliar fácilmente. Pero no estoy seguro de una convención similar con la programación funcional.
Respuestas:
En la práctica, será necesario dividir una gran base de código funcional en algún tipo de sistema estructural. Si se siente cómodo en OOP, las clases siguen siendo el elemento estructurante natural. Se esfuerza por "objetos funcionales": las funciones relacionadas conceptualmente se colocan juntas en una clase. Por supuesto, evita el estado no conversacional y la dependencia de las variables de instancia.
Yendo más allá de la estructura, existen ciertas técnicas, como la aplicación de funciones parciales, que se prefieren en el mundo funcional para la extensión, el mantenimiento y la generalización. Sin embargo, aprender a reconocer estas oportunidades puede ser difícil cuando se trabaja en un modo híbrido funcional / objeto. Personalmente, creo que es una buena idea trabajar en modo híbrido, pero estudiar y jugar en un entorno más puro, como el proporcionado por Haskell.
fuente
Los lenguajes de programación funcional disfrutan de muchos conceptos poderosos para construir código de alta calidad, por ejemplo: funciones aplicadas parciales, composiciones de funciones (esta es realmente poderosa y mi favorita), macros, funciones de orden superior. Y no olvidar las estructuras de datos inmutables.
fuente
En lugar de abandonar OOP para FP, intente aumentarlo con algunos patrones de FP. Cada vez que necesite procesar una colección es un buen candidato y apunta a un conjunto común de métodos de FP como mapear, doblar y reducir. Eche un vistazo a underscore.js y backbone, un marco MVC que hace un uso extensivo del primero.
fuente