Como escrever código gerenciável com programação funcional?

14

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.

dade
fonte
4
JavaScript é uma linguagem orientada a objetos, então vá em frente e usar suas habilidades OOP usando Node.js
Jonas
5
tente funções. Isso resolverá quase todos os problemas.
tp1 26/11/11
4
Aqui está um grande recurso em manter seu código-fonte nó limpo e arrumado e, portanto, controlável: nodeguide.com/style.html
Daniel Bradley
2
Até onde eu sei, o único recurso de programação funcional que o JavaScript possui são lambdas (mais precisamente, funções sem nome) e passagem de função. Se você quiser aprender programação funcional, provavelmente deve procurar algo como Haskell ou F # / OCaml ou Scala ou Lisp.
Rei Miyasaka

Respostas:

8

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.

Larry OBrien
fonte
2

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.

Quíron
fonte
1

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.

sunwukung
fonte