Come scrivere codice gestibile con la programmazione funzionale?

14

Ho appena iniziato con la programmazione funzionale (con JavaScript e Node.js) e dall'aspetto delle cose sembra che il codice che sto scrivendo diventi una base di codice infernale da gestire, rispetto ai linguaggi di programmazione che hanno una sorta di paradigma orientato agli oggetti.

Con OOP ho familiarità con le pratiche che assicurano che il codice sia facilmente gestibile ed estensibile. Ma non sono sicuro di convenzioni analoghe con la programmazione funzionale.

    
posta dade 26.11.2011 - 15:55
fonte

3 risposte

8

In pratica, una grande base di codice funzionale dovrà ancora essere divisa in una sorta di sistema strutturale. Se ti senti a tuo agio in OOP, le classi rimangono il naturale elemento strutturante. Ti sforzi per "oggetti funzionali": le funzioni concettualmente correlate sono raggruppate in una classe. Ovviamente, si evita lo stato non di conversazione e si fa affidamento sulle variabili di istanza.

Andando oltre la struttura, ci sono alcune tecniche, come l'applicazione di una funzione parziale, che sono preferite nel mondo funzionale per l'estensione, la manutenibilità e la generalizzazione. Imparare a riconoscere queste opportunità può essere difficile quando si lavora in modalità ibrida funzionale / oggetto, però. Personalmente, penso che sia una buona idea lavorare in una modalità ibrida, ma studiare e suonare in un ambiente più puro, come quello fornito da Haskell.

    
risposta data 26.11.2011 - 18:58
fonte
2

I linguaggi di programmazione funzionale godono di molti concetti potenti per creare codice di alta qualità, ad esempio: Funzioni applicative parziali, composizioni di funzioni (questa è veramente potente e la mia preferita), macro, funzioni di ordine superiore. E non dimenticare strutture dati immutabili.

    
risposta data 26.11.2011 - 20:39
fonte
1

Invece di abbandonare OOP per FP, prova ad aumentarlo con alcuni pattern FP. Ogni volta che è necessario elaborare una raccolta è un buon candidato e punta a un insieme comune di metodi FP come mappa, piega e riduzione. Dai un'occhiata a underscore.js e backbone, un framework MVC che fa ampio uso del precedente.

    
risposta data 28.12.2011 - 18:30
fonte