Attualmente sto leggendo Codice pulito di Robert Martin . Penso che sia grandioso, e quando scrivo il codice OO sto prendendo a cuore le sue lezioni. In particolare, penso che il suo consiglio di usare piccole funzioni con nomi significativi faccia fluire il mio codice molto più agevolmente. La cosa migliore è riassunta da questa citazione:
[W]e want to be able to read the program as though it were a set of TO paragraphs, each of which is describing the current level of abstraction and referencing subsequent TO paragraphs at the next level down.
( Pulisci codice , pagina 37: un "paragrafo TO" è un paragrafo che inizia con una frase espressa nell'infinito. "Per fare X, eseguiamo i passi Y e Z." "Per fai Y, noi ... "ecc.) Ad esempio:
TO RenderPageWithSetupsAndTeardowns, we check to see whether the page is a test page and if so, we include the setups and teardowns. In either case we render the page in HTML
Scrivo anche codice funzionale per il mio lavoro. Gli esempi di Martin nel libro sicuramente sono letti come se fossero una serie di paragrafi, e sono molto chiari - ma non sono così sicuro che "si legge come un insieme di paragrafi" è una qualità desiderabile per il codice funzionale di avere .
Prendendo esempio dalla libreria standard Haskell :
maximumBy :: (a -> a -> Ordering) -> [a] -> a
maximumBy _ [] = error "List.maximumBy: empty list"
maximumBy cmp xs = foldl1 maxBy xs
where
maxBy x y = case cmp x y of
GT -> x
_ -> y
Questo è il più lontano che si possa ottenere dal consiglio di Martin, ma questo è conciso, idiota Haskell. A differenza degli esempi di Java nel suo libro, non riesco a immaginare un modo per ricondurlo a qualcosa che ha il tipo di cadenza che chiede. Sospetto che Haskell abbia scritto sullo standard di Clean Code sarebbe venuto fuori tempo e innaturale.
Ho sbagliato a considerare (almeno alcuni) Pulisci codice in contrasto con le best practice di programmazione funzionale? Esiste un modo ragionevole per reinterpretare ciò che dice in un diverso paradigma?