Equivalente ai principi SOLID per la programmazione funzionale

28

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?

    
posta mikera 19.09.2012 - 09:38
fonte

2 risposte

8

È un po 'difficile trovare equivalenti, ma posso provare:

  • S (SRP) in FP una funzione crea SEMPRE lo stesso output per gli stessi argomenti questo è chiamato trasparenza referenziale
  • O (OCP) in FP c'è un concetto chiamato tipi di dati algebrici, dai un'occhiata a come si relaziona alle gerarchie di classi e quale problema provano entrambi a risolvere 1
  • L (LSP) Il principio di sostituzione di Liskov è controvarianza 2
  • D (DIP) nella programmazione funzionale generale raggiunge l'astrazione attraverso la composizione di funzioni, ci sono anche altri meccanismi con l'aiuto della teoria delle categorie (per esempio monoide o funtore), per "Iniezione di dipendenza" 3
risposta data 26.09.2012 - 10:45
fonte
32

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.

    
risposta data 26.10.2012 - 20:43
fonte

Leggi altre domande sui tag