Pipeline operator, uma proposta interessante ao tc39
Há algum tempo foi proposto ao tc39, o comitê que participa da evolução do JavaScript, o pipeline operator. Essa feature, fortemente inspirada em linguagens como Elixir e F#, introduz o novo operador |>
.
Para que possamos entender como este operador mudará a estética do código que escrevemos hoje, nada melhor do que um exemplo com e sem o uso do pipeline operator. Aliás, aproveitarei o mesmo exemplo do artigo “Compondo funções em JavaScript” publicado por este mesmo autor:
const trim = text => text.trim();
const toUpperCase = text => text.toUpperCase();
const split = separator => text => text.split(separator);
const word = ' Calopsita do Agreste ';
// sem o pipeline operator
const words =
split(' ')(
toUpperCase(
trim(word)
)
);
console.log(words); // ['CALOPSITA', 'DO', 'AGRESTE']
Temos o encadeamento das funções split
, toUpperCase
e trim
para processar a string ' Calopsita do Agreste '
.
Pipeline operator em ação
Agora, vejamos as mesmas operações, dessa vez com o pipeline operator:
const trim = text => text.trim();
const toUpperCase = text => text.toUpperCase();
const split = separator => text => text.split(separator);
const word = ' Calopsita do Agreste '
// com o pipeline operator
const words = word
|> trim
|> toUpperCase
|> split(' ');
console.log(words); // ['CALOPSITA', 'DO', 'AGRESTE']
Agora, fica bem claro para quem esta lendo que a primeira transformação a ser realizada é através da função trim
e assim por diante.
Como utilizar o pipeline operator hoje
Para quem não deseja esperar o trâmite padrão da proposta no tc39 e já deseja ter um gostinho do pipeline operador pode lançar mão do babel-plugin-transform-pipeline, um plugin do Babel. Todavia esse autor teve dificuldades em fazê-lo funcionar, pois uma atualização do babylon, o parser JavaScript do Babel, quebrou recentemente o plugin.
Conclusão
O pipeline operator, ainda em estágio embrionário, promete melhorar a manutenção e a legibilidade de um código escrito principalmente no paradigma funcional. E você? Utilizaria esse operador? Deixe sua opinião.