fp-pack, utilitário funcional para TypeScript centrado em Pipe e fácil de usar no trabalho em equipe
(github.com/superlucky84)1. Motivação – por que criei isso
Acredito que cada pessoa pode valorizar aspectos diferentes da programação funcional.
Alguns podem considerar a consistência teórica mais importante, enquanto outros podem dar mais peso à consistência das abstrações.
Entre esses aspectos,
sempre senti que o maior benefício da programação funcional é poder enxergar de forma declarativa, de relance, o fluxo de dados por meio de pipe.
Especialmente em ambientes como JavaScript, onde o código pode se tornar complexo com facilidade,
considerei ainda mais importante no trabalho do dia a dia ter uma estrutura visível que mostre de onde os dados vêm e para onde fluem.
Mas, ao tentar aplicar essa abordagem
em trabalho prático de equipe, com membros que têm níveis diferentes de compreensão de programação,
acabamos esbarrando com frequência em limitações bem reais.
No processo de aplicar padrões funcionais,
os valores vão sendo envolvidos por estruturas cada vez mais abstratas,
e aumentam os momentos em que é preciso entender regras separadas em cada etapa intermediária,
então várias vezes vivi a experiência de ver justamente aquilo que eu considerava importante — “a legibilidade do fluxo completo do pipeline” — ficar obscurecido.
Recentemente, à medida que as ferramentas que ajudam a gerar código ficaram cada vez mais sofisticadas,
também passei a encontrar com frequência casos em que a arquitetura se tornava excessivamente complexa sem intenção.
Por isso, no fp-pack, escolhi conscientemente
uma estrutura que induz tanto pessoas quanto ferramentas
a escrever pipelines o mais simples possível.
O fp-pack é um projeto pessoal criado com base nessas experiências,
priorizando não a completude teórica,
mas sim a legibilidade centrada em Pipe que possa ser mantida de forma sustentável em ambientes de equipe.
Para que o tratamento de efeitos colaterais na programação funcional não fique restrito apenas a quem já está acostumado com uma teoria específica,
também introduzi uma abordagem experimental de tratamento de Side Effect reinterpretada com um padrão fácil de entender
(guia relacionado 👉 https://superlucky84.github.io/fp-pack/#/ko/guide/side-effect-guide).
2. Princípios centrais
-
Foco em Plain Value
Dentro do pipeline, os valores não são encapsulados desnecessariamente,
mantendo Plain Object / Plain Value como estão
para que a compreensão do fluxo e a depuração sejam mais intuitivas. -
Separação explícita de Side Effect
Foi projetado para usar um pipeline dedicado separado
somente quando é necessário interrupção (Early Exit) ou tratamento de exceções. -
Baixa curva de aprendizado
Em vez de novos conceitos,
a estrutura é centrada em padrões de uso familiares depipeepipeAsync,
facilitando o compartilhamento dentro da equipe. -
Segurança de tipos
Com TypeScript,
é possível verificar em tempo de compilação incompatibilidades de tipos no meio do pipeline.
3. Considerações finais
Mesmo sem precisar aprender novos conceitos complexos,
espero que isto possa ser uma opção
para quem quer usar de forma natural, no trabalho prático, no ambiente JavaScript / TypeScript,
a principal vantagem da programação funcional:
“código em que o fluxo de dados é fácil de ler”.
🔗 Documentação
https://superlucky84.github.io/fp-pack/#/ko
🔗 GitHub
https://github.com/superlucky84/fp-pack
1 comentários
Pensei em uma programação com um toque de pensamento funcional que possa ser usada naturalmente por membros da equipe com diferentes perfis, incluindo desenvolvedores iniciantes e de nível intermediário, sem forçá-los a se adaptar a um estilo ou forma de pensar específica, desde que entendam funções,
pipee currying; foi com essa ideia que criei o fp-pack.