Cuando se habla del paradigma funcional en la programaciÃģn uno de los conceptos bÃĄsicos que resalta por su importancia son la funciones puras. Las personas acostumbradas a este paradigma hacen un gran esfuerzo para mantener su cÃģdigo tanto como sea posible en funciones puras, aquà les explicarÃĐ algunas de las razones. Pero primero debemos saber...
ÂŋQuÃĐ es una funciÃģn pura?
Una funciÃģn cuyo resultado es influenciado solamente por sus parÃĄmetros de entrada y no tiene ningÚn efecto observable en el mundo exterior (lo que se conoce como efecto secundario).
Beneficios
Quiero enfocarme en los beneficios que este tipo de funciones nos aportan a nosotros los humanos que leemos e interpretamos cÃģdigo en nuestra mente.
- Son predecibles
Proporcionarles los mismos datos de entrada siempre produce el mismo resultado. Esta es una de las propiedades mÃĄs relevantes, y para mà es la mÃĄs importante. Nos da habilidad de probar con relativa facilidad la efectividad de nuestra soluciÃģn.
Digamos que tenemos una funciÃģn que transforma todas las letras de un texto a mayÚscula ÂŋquÃĐ necesitamos para probar que funciona? La funciÃģn, sus parÃĄmetros y el valor esperado.
to_uppercase('hello') == 'HELLO';
No necesitamos simular el ambiente externo o herramientas especiales, sÃģlo comparamos con el valor esperado. Esto nos da confianza en lo que hemos creado, porque podemos probar con certeza que funciona de manera adecuada.
- ComprensiÃģn
Cuando hablamos de cÃģdigo nos pasamos mÃĄs tiempo leyendo y analizando que escribiendo. La comunicaciÃģn es un aspecto que debemos considerar. Una funciÃģn pura en teorÃa necesitarÃa la menor cantidad de contexto para poder entender su comportamiento, ya que todo lo que necesitas saber estÃĄ (o al menos deberÃa) en el cuerpo de la funciÃģn y sus argumentos.
Otra propiedad que poseen estas funciones se le conoce como transparencia referencial, esto significa que podemos reemplazar la llamada de una funciÃģn con el valor que retorna.
Por ejemplo, esto.
to_uppercase('hi') + ', user';
Puede ser reemplazado por esto.
'HI, user';
Quiere decir que una vez que comprendes quÃĐ hace una funciÃģn pura puedes reemplazar mentalmente la llamada de la funciÃģn con su resultado.
- ComposiciÃģn
Si han creado una funciÃģn pura hay una alta probabilidad de que hayan creado un componente independiente que pueden aprovechar en diferentes contextos. Al ser completamente independientes y reusables son los candidatos perfectos para ser combinados con otros componentes. PiÃĐnsenlo, si "combinan" dos funciones puras en una nueva funciÃģn, el resultado tambiÃĐn serÃĄ una funciÃģn pura. Esta es una caracterÃstica poderosa que les permitirÃĄ crear procedimientos complejos con piezas "simples."
Esto no termina aquÃ
Las funciones puras pueden ser buenas pero en algÚn momento debemos abandonar la idea de la pureza y causar un cambio en el mundo (mostrar algo en pantalla, hacer una peticiÃģn HTTP, etc...) para eso he preparado otros artÃculos con mÃĄs detalles sobre el tema.
Fuentes
- Functional Programming in JS: What? Why? How? (video)
- An introduction to functional programming
- Functional-Light JavaScript - Chapter 5: Reducing Side Effects
Gracias por su tiempo. Si este artÃculo les pareciÃģ Útil y quieren apoyar mis esfuerzos para crear mÃĄs contenido pueden dejar una propina en ko-fi.com/vonheikemen.

Top comments (0)