Ridurre l'arità delle funzioni [chiuso]

1

Ho scoperto che ridurre a zero l'arità delle funzioni nel mio codice o migliorare in modo significativo le loro caratteristiche non funzionali, come la testabilità, la manutenibilità e la loro componibilità.

Questo deve essere stato identificato altrove - questo approccio ha un nome?

    
posta Ben 02.11.2015 - 22:59
fonte

1 risposta

3

Sì, un'arità di uno è una proprietà di una funzione matematica. Il caso arity = 0 è veramente arity = 1 con il parametro void o unit . E 1 input non è l'unica proprietà, ma forse si presta ad alcuni degli altri (ad esempio senza effetti collaterali). Forse le tue funzioni tendono a conformarsi alla definizione delle funzioni matematiche?

Ecco un buon articolo sulle funzioni matematiche (la base per la programmazione funzionale) con i loro vantaggi e svantaggi nel contesto di programmazione. Ecco un estratto.

As you can see from the diagrams, there is always exactly one input and one output for a mathematical function. This is true for functional programming languages as well, although it may not be obvious when you first use them.

Per le persone che grattano la testa adesso, in pratica nella programmazione funzionale, non si codificano solo le funzioni a parametro singolo e nient'altro. Attraverso l'inganno matematico, è possibile mostrare che una funzione N-parametro può essere cambiata in N funzioni a parametro singolo con currying. (Quindi, il compilatore lo fa per te.)

Probabilmente la manutenibilità ha più a che fare con i seguenti DRY e SRP, poiché le tue funzioni sono suddivise in singole operazioni.

La componibilità è uno dei punti di forza primari delle funzioni matematiche. Non mi prenderò del tempo per approfondire tutte le informazioni su f(g(x)) qui. E probabilmente non sono bravo a spiegarlo come gli altri, quindi su altro link su questo argomento.

La testabilità è anche molto alta con le funzioni matematiche poiché mancano degli effetti collaterali che devono essere tenuti in considerazione. Per definizione danno anche risultati ripetibili.

    
risposta data 03.11.2015 - 23:40
fonte

Leggi altre domande sui tag