Comecei com a programação funcional (com JavaScript e Node.js) e, pela aparência, parece que o código que estou escrevendo se tornaria um inferno de uma base de código para gerenciar, quando comparado às linguagens de programação que possuem um tipo de paradigma orientado a objetos.
Com o OOP, estou familiarizado com práticas que garantem que seu código seja facilmente gerenciado e extensível. Mas não tenho certeza de convenção semelhante com a programação funcional.
Respostas:
Na prática, uma grande base de código funcional ainda precisará ser dividida em algum tipo de sistema estrutural. Se você se sente à vontade no OOP, as classes continuam sendo o elemento estruturador natural. Você se esforça para "objetos funcionais": funções conceitualmente relacionadas são colocadas juntas em uma classe. Evidentemente, você evita um estado não conversacional e depende de variáveis da instância.
Indo além da estrutura, existem certas técnicas, como a aplicação parcial de funções, que são preferidas no mundo funcional para extensão, manutenção e generalização. Aprender a reconhecer essas oportunidades pode ser difícil quando se trabalha em um modo híbrido de funcionalidade / objeto. Pessoalmente, acho que é uma boa ideia trabalhar no modo híbrido, mas estudar e jogar em um ambiente mais puro, como o fornecido por Haskell.
fonte
As linguagens de programação funcional desfrutam de muitos conceitos poderosos para criar código de alta qualidade, por exemplo: Funções aplicadas parciais, composições de funções (essa é realmente poderosa e a minha favorita), macros, funções de ordem superior. E para não esquecer estruturas de dados imutáveis.
fonte
Em vez de abandonar o OOP para FP, tente aumentá-lo com alguns padrões de FP. Toda vez que você precisar processar uma coleção é um bom candidato e aponta para um conjunto comum de métodos de FP, como mapear, dobrar e reduzir. Dê uma olhada no underscore.js e no backbone, uma estrutura MVC que faz uso extensivo da primeira.
fonte