¿Cómo escribir código manejable con programación funcional?

14

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.

dade
fuente
44
JavaScript es un lenguaje orientado a objetos, así que continúe y use sus habilidades de OOP usando Node.js
Jonas
55
probar funciones. Esos resolverán casi todos los problemas.
tp1
44
Aquí hay un gran recurso para mantener el código fuente de su nodo limpio y ordenado y, por lo tanto, manejable: nodeguide.com/style.html
Daniel Bradley
2
Hasta donde sé, la única característica de programación funcional que tiene JavaScript es lambdas (más exactamente, funciones sin nombre) y paso de funciones. Si desea aprender programación funcional, probablemente debería buscar algo como Haskell o F # / OCaml o Scala o Lisp.
Rei Miyasaka

Respuestas:

8

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.

Larry OBrien
fuente
2

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.

Quirón
fuente
1

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.

sunwukung
fuente