Esiste un termine migliore per "concatenamento dei metodi funzionali"?

3

Sto scrivendo una guida in stile C # per il mio team e sto cercando di descrivere i vantaggi dei metodi in stile funzionale senza effetti collaterali. Voglio includere i riferimenti online per eseguire il backup dei suggerimenti, ma non riesco a sembrare a Google il tipo di concatenamento dei metodi funzionali che ho in mente.

Quando penso a "catena di metodi", immagino qualcosa di simile (in Ruby)

userInput.chomp.downcase.split(",").map(&:to_i)[3].to_s(16)

dove ogni metodo restituisce un nuovo oggetto (forse anche di una classe diversa) e tutto è privo di effetti collaterali, quindi è come comporre funzioni in un linguaggio funzionale. Scrivere metodi simili a funzioni rende molto facile costruire questo tipo di catene e, secondo la mia esperienza, semplifica enormemente il codice.

Ma quando uso Google "C # method chaining", continuo a cercare cose come questa

myObj.AddItem(mItem).AddItem(mItem2).AddItem(mItem3);

dove ogni metodo muta e restituisce il ricevitore. Questo è praticamente l'opposto della programmazione funzionale e, se mai, è il tipo di cosa che voglio scoraggiare dal mio team. Anche quando eseguo il "concatenamento dei metodi funzionali C #" di Google, il risultato migliore è il post di blog su StringBuilder , che si basa interamente sugli effetti collaterali di ogni chiamata di metodo!

C'è un termine diverso per questo oltre al "concatenamento di metodi"? O, ancora meglio, c'è un posto che documenta i vantaggi di questo stile?

    
posta Max 17.10.2017 - 16:11
fonte

1 risposta

4

Il nome comunemente usato per questo è un Fluent Interface . Nel mondo funzionale, è semplicemente Composizione delle funzioni .

Ma al di fuori del mondo funzionale, ha pochi buoni usi applicabili. Sì, è fantastico per gli enumerabili. Ed è fattibile per data / orari. Ma soprattutto è un vile costrutto che viene abusato per creare un codice che è troppo intelligente, o "leggibile" (ma solo per pochi che hanno familiarità con la tua strana libreria fluente in-house).

I metodi in stile funzionale senza effetti collaterali (in particolare le funzioni pure) do hanno enormi vantaggi in termini di testabilità, riusabilità, robustezza, concorrenza, prestazioni ... concentrati su quelli, non su questa sintassi sintetica.

    
risposta data 17.10.2017 - 16:30
fonte