Ho trovato che i principi SOLID sono molto utili quando si pensa alla progettazione orientata agli oggetti.
Esiste un insieme simile / equivalente di principi indipendenti dalla lingua adattati per la programmazione funzionale?
Ho trovato che i principi SOLID sono molto utili quando si pensa alla progettazione orientata agli oggetti.
Esiste un insieme simile / equivalente di principi indipendenti dalla lingua adattati per la programmazione funzionale?
È un po 'difficile trovare equivalenti, ma posso provare:
SOLID risulta essere una buona idea anche per i reami funzionale / imperativo.
SRP - "Solo fare una cosa" è stato preso dalla programmazione imperativa in primo luogo. Avere funzioni piccole e mirate è buono.
OCP : consentire di modificare i comportamenti senza modificare il codice è buono. La programmazione funzionale utilizza funzioni di ordine superiore più dell'ereditarietà, ma il principio è valido.
LSP - Rispettare un contratto di interfaccia è altrettanto valido nella programmazione funzionale quanto nell'oggetto orientato. Se una funzione di ordinamento prende un comparatore, allora ti aspetteresti che lo 0 sia uguale, meno che fornisce risultati negativi, maggiore del comportamento dei risultati positivi.
ISP : la maggior parte dei linguaggi funzionali ha ancora strutture. È comunque buona norma specificare il set di dati minimo richiesto da una funzione. È ancora buona pratica richiedere l'interfaccia meno specifica ai dati (perché usare liste di interi quando Enumerations of T funziona altrettanto bene?)
DIP : specificare i parametri di una funzione (o una funzione di ordine superiore per recuperarli) piuttosto che codificare la funzione per ottenere qualche valore è altrettanto valido nella programmazione funzionale come nell'oggetto orientato.
E anche quando si esegue la programmazione orientata agli oggetti, molti di questi principi si applicano anche alla progettazione di metodi negli oggetti.
Leggi altre domande sui tag design-patterns functional-programming solid