Ho trovato i principi SOLID abbastanza utili quando si pensa al design orientato agli oggetti.
Esiste un insieme simile / equivalente di principi indipendenti dalla lingua su misura per la programmazione funzionale?
Ho trovato i principi SOLID abbastanza utili quando si pensa al design orientato agli oggetti.
Esiste un insieme simile / equivalente di principi indipendenti dalla lingua su misura per la programmazione funzionale?
Risposte:
È un po 'difficile trovare equivalenti ma posso provare:
SOLID risulta essere una buona idea anche per i regni funzionale / imperativo.
SRP : "Solo una cosa" è stata presa in primo luogo dalla programmazione imperativa. Avere funzioni piccole e mirate è buono.
OCP - Permettere di cambiare comportamento senza modificare il codice è buono. La programmazione funzionale utilizza funzioni di ordine superiore più dell'ereditarietà, ma il principio vale.
LSP - Rispettare alcuni contratti di interfaccia è altrettanto utile nella programmazione funzionale quanto nell'orientamento agli oggetti. Se una funzione di ordinamento accetta un comparatore, allora ci si aspetterebbe che il comportamento "0 sia uguale a, inferiore a fornisce risultati negativi, maggiore di risultati positivi".
ISP - La maggior parte dei linguaggi funzionali ha ancora delle strutture. Specificare il set di dati più piccolo richiesto da una funzione è ancora una buona pratica. Richiedere l'interfaccia meno specifica per i dati (perché usare Elenchi di ints quando funzionano anche le enumerazioni di T?) È ancora una buona pratica.
DIP - Specificare i parametri per una funzione (o una funzione di ordine superiore per recuperarli) piuttosto che codificare a fondo la funzione per ottenere un valore è altrettanto utile nella programmazione funzionale quanto nell'orientamento agli oggetti.
E anche quando si esegue una programmazione orientata agli oggetti, molti di questi principi si applicano anche alla progettazione di metodi negli oggetti.