Pipe en JavaScript o composición de funciones | Programador Web Valencia

Pipe en JavaScript o composición de funciones

2 minutos

Tubería con JavaScript

La composición de funciones es una técnica que consiste en la creación de una nueva función a partir de dos o más funciones existentes. Se consigue envolviendo las funciones en una mayor que se encarga de ir trasladando los valores de forma secuencial.

Pensaba que JavaScript no podía trabajar de esta manera hasta hace poco cuando descubrí esta maravillosa función de Eric Elliott

const pipe = (...fns) => (x) => fns.reduce((v, f) => f(v), x);

Sus artículos de medium son de gran calidad y altamente recomendables.

¿Por qué debería utilizarlo? El uso de tuberías (o “pipes”) tiene varias ventajas:

  • Mejora la legibilidad del código: las tuberías permiten encadenar varias operaciones en una sola línea de código, lo que lo hace más fácil de leer y entender.
  • Aumenta la reutilización del código: las funciones utilizadas en las tuberías pueden ser reutilizadas en otras partes del código, lo que reduce la cantidad de código duplicado.
  • Facilidad de composición: las tuberías permiten combinar fácilmente varias operaciones en una sola, lo que facilita la creación de flujos de trabajo complejos.
  • Mejora el rendimiento: las tuberías pueden mejorar el rendimiento al permitir que los datos fluyan de una operación a otra sin necesidad de almacenarlos en variables intermedias.

Veamos un ejemplo. Quiero dar transformar un texto (“texto EN tubería”) en un formato compatible con un hashtag para Twitter. Para ello construiré algunas funciones simples que irán modificando el string con pequeñas modificaciones: convertir en minúsculas todas sus letras, quitar los espacios y concadenar #.

const pipe = (...fns) => (x) => fns.reduce((v, f) => f(v), x);

function setLowerCase(str) {
    return str.toLowerCase();
}

function concatHash(str) {
    return `#${str}`;
}

function deleteSpaces(str) {
    return str.replaceAll(" ", "");
}

const strFormat = pipe(
    concatHash,
    deleteSpaces,
    setLowerCase
)("texto EN tubería");

console.log(strFormat);
// #textoentuberia

Además esta misma estructura, o filosofía, podemos implementarla de manera sencilla en otros lenguajes como puede ser Python.

El uso de tuberías es fundamental en otros lenguajes como Lisp, Clojure, Haskell, Elixir, F# o Unix Shell (línea de comandos de Unix). En otros lenguajes, como JavaScript o Python, debemos apoyarnos en algunas funciones de ayuda pero ello mejorará la legibilidad y reutilización de código. Por lo tanto, incorporarlo a nuestra forma de trabajar nos aportará grandes beneficios tanto a corto como a largo plazo.

Esta obra está bajo una Licencia Creative Commons Atribución-NoComercial-SinDerivadas 4.0 Internacional.

Atribución/Reconocimiento-NoComercial-SinDerivados 4.0 Internacional

¿Me ayudas?

Comprame un café
Pulsa sobre la imagen

No te sientas obligado a realizar una donación, pero cada aportación mantiene el sitio en activo logrando que continúe existiendo y sea accesible para otras personas. Además me motiva a crear nuevo contenido.

Comentarios

{{ comments.length }} comentarios

Nuevo comentario

Nueva replica  {{ formatEllipsisAuthor(replyComment.author) }}

Acepto la política de Protección de Datos.

Escribe el primer comentario

Tal vez también te interese...