cover

Intro a la programación funcional

author photo

Héctorbliss

@hectorbliss


Mira el video si prefieres:

robot logo saying hello

No te quedes atrás: Actualízate

Suscríbete para recibir información sobre nuevos frameworks, updates, eventos, tips, hacks y más.

Llamamos programación funcional a un paradigma de programación. Es decir, es una forma de emplear un lenguaje de programación, centrándose enteramente en las funciones como las piezas más importantes en la creación de aplicaciones. 🧩

Mientras que la programación orientada a objetos se centra, bueno, en los objetos. 🤓

Michael Feathers quien consolido el acrónimo S.O.L.I.D. decía que:

“La programación orientada a objetos hace al código entendible al encapsular las partes móviles. La programación funcional, crea código entendible al minimizar las partes móviles.” — Michael Feathers

Para alcanzar el objetivo de la programación funcional, solemos echar mano de muchos otros conceptos como funciones de orden superior, aplicación parcial de las funciones, inmutabilidad o transparencia referencial.

Vamos a aprender más de estos conceptos en esta serie de entradas. 🤩

🚨 ¿Qué problema resuelve la programación funcional?

Para entender cuál es el problema con “las partes móviles”, primero cambiémoste el nombre de “partes móviles” a “estado” o “mutaciones de estado”. 🤯 En programación orientada a objetos usamos encapsulamiento para evitar que los objetos sean consientes de las mutaciones en otros objetos, bueno, para la programación funcional, no tiene caso siquiera lidiar con estas mutaciones.

Sin estados no hay necesidad de encapsular nada. 🤓

Pero, ¿Por qué los estados son tan malos? Un estado puede ser problemático porque hace que el comportamiento de nuestro código sea más difícil de predecir. 🤕

Imagina que tenemos esta función:

function shouldShowAd() { return window.location.pathname === '/'; }

Si observas esta función, notarás que el pathname se utiliza como un estado, y este estado cambia constantemente.

Si quisiéramos predecir el resultado de shouldShowAd tendríamos que saber el estado actual; podríamos asumir que el estado no ha cambiado desde la última actualización y cometer errores.

Este problema se resuelve cuando se crean funciones puras. 😇

😇 ¿Qué son las Funciones puras?

La programación funcional está muy interesada en mejorar la predictibilidad del código, por ello ha introducido una serie de conceptos y principios que ayudan con esto.

Pero, definitivamente, el principio núcleo son: las funciones puras (pure functions). 🔥

Una función es considerada pura cuando esta, devuelve un valor que es computado utilizando solo los argumentos que se le han pasado a la función. Una función pura no mutará sus argumentos o cualquier otra variable externa. 👼🏻

Esto hace que la función pura siempre devuelva el mismo resultado, dados los mismos argumentos, independientemente de en qué momento se le invoque. 🐣 ✅

Veamos cómo sería una función pura, utilizando el ejemplo anterior:

function shouldShowAd(pathname: string) { return pathname === '/'; }

Ahora podemos predecir perfectamente el resultado de esta función. Esto es más fácil de entender, mantener y por supuesto, de probar (testing). 🦾🤖

Piénsalo, si tuvieras que escribir tests para esta función, ¿qué versión sería más fácil de probar? ¿La que necesita el objeto window? No lo creo.

Podemos alejar nuestros tests de la complejidad gracias a la programación funcional. 🤯

Necesitamos escribir más tests como los que resultan con programación funcional:

describe("ShouldShowAd test set", ()=>{ it("Should return true with root path", ()=>{ expected(shouldShowAd('/')).toBeTruthy() }) it("Should return false when path is not root", ()=>{ expected(shouldShowAd('/pricing')).toBeFalsy() }) })

Pero esto es solo el principio, ahora que entendemos mejor qué es la programación funcional, estamos listos para ir más profundo.

Tal vez sea momento de hablar sobre cómo el evitar las mutaciones de estado, entender los efectos secundarios y la transparencia referencial nos ayudarán a escribir código más legible, de mejor calidad y muy confiable.

No dejes de decirme en los comentarios si estás interesado en seguir aprendiendo sobre programación funcional. Seguiremos con efectos secundarios en la siguiente entrada.

Abrazo. Bliss. 🤓

banner

¿Quieres mantenerte al día sobre los próximos cursos y eventos?

Suscríbete a nuestro newsletter

Jamás te enviaremos spam, nunca compartiremos tus datos y puedes cancelar tu suscripción en cualquier momento 😉

robot logo saying hello
facebook icontwitter iconlinkedin iconinstagram iconyoutube icon

© 2016 - 2023 Fixtergeek