1 luglio, 2019

Gli sviluppatori JavaScript stanno abbracciando la programmazione funzionale molto in questi giorni, e c’è un’enorme difesa per scrivere funzioni Pure. Ora, quali sono le funzioni Pure? Non molto tempo fa, ho imparato il concetto di Funzioni Pure, e con mia sorpresa, stavo già scrivendo molte funzioni pure, senza rendermi conto che c’era un termine per questo.

 Funzioni Pure

Cosa si qualifica come Funzione Pura?

Una funzione è considerata pura, se aderisce alle seguenti regole:

  1. La funzione restituisce sempre lo stesso output se vengono passati gli stessi argomenti.
  2. La funzione non produce effetti collaterali.

Abbiamo tutte le funzioni pure scritte in passato consapevolmente o inconsapevolmente.
Dai un’occhiata a una funzione pura di seguito, che restituisce una somma di due numeri dati due argomenti di input.

function sumOfNumbers(a, b) { return a + b;}

L’output di questa funzione rimarrà sempre lo stesso, se vengono passati gli stessi argomenti di input. Abbastanza semplice. Le funzioni pure sono semplici elementi costitutivi che hanno sempre un comportamento prevedibile. Quindi restituiscono sempre lo stesso output prevedibile, senza alcuna influenza esterna.

Ecco un semplice esempio, su come appare una funzione impura.

var value = 5;function impure(arg) { return value + 2 + 3;}

Qui la funzione è considerata impura, perché non sta usando l’argomento che le è stato passato. Invece, utilizza un valore esterno che è soggetto a modifiche. Pertanto, rendendo la funzione impura a causa di interferenze esterne / effetti collaterali.

Va bene, parliamo del requisito due sugli effetti collaterali.

Quali sono gli effetti collaterali?

Gli effetti collaterali si verificano in qualsiasi momento la funzione interagisce con il mondo esterno.

Alcuni esempi di effetti collaterali comuni includono:

  • Effettuare una chiamata API
  • Mutare i dati
  • i log della console sullo schermo
  • Manipolare la data DOM
  • .now () per ottenere la data/ora corrente
  • async attendono le chiamate/in attesa di promesse per risolvere
  • matematica.random() per generare numeri casuali

Beh, ci si potrebbe chiedere come possiamo scrivere funzioni senza effetti collaterali per tutto il tempo. È abbastanza difficile evitare del tutto gli effetti collaterali. Tutto quello che sto dicendo è che, affinché una funzione si qualifichi come pura, come suggerisce il nome, non dovrebbe avere effetti collaterali.

Cosa guadagno scrivendo Funzioni Pure?

 Funzioni pure

Pic cortesia: Picpedia.Org

Va bene, abbiamo ottenuto le definizioni di mezzo. Ora si può chiedere quali sono i suoi benefici.

Il test è facile

Immagina, hai un sacco di funzioni pure, che fanno solo una cosa. Non hanno effetti collaterali esterni e restituiscono sempre un output prevedibile. Queste funzioni saranno molto più facili da testare, rispetto a una funzione che ha un sacco di dipendenze e comportamenti imprevedibili. Scrivere codice pulito e testabile contribuirà a migliorare drasticamente la qualità del codice.

Il codice di debug non è un dolore

Con funzioni pure, il codice di debug non sarà un grande dolore, rispetto al debug di funzioni impure. Se si verifica un problema o un bug e lo si è ristretto a una funzione pura, è possibile essere certi che non è necessario guardare al di fuori dell’ambito di tale funzione per trovare il problema. Pertanto, migliorando drasticamente l’esperienza di debug dello sviluppatore.

Memoization per migliorare le prestazioni

Con funzioni pure, è garantito il ritorno dello stesso output per un dato input. Questo crea possibilità di memoizzazione. Quando lo stesso input viene passato a una funzione, può estrarre i risultati da una cache, rendendo l’app più veloce. Caching può risparmiare tonnellate di risorse e migliorare le prestazioni. E la memorizzazione nella cache delle funzioni pure può essere eseguita senza alcuna preoccupazione, poiché sono prevedibili senza effetti collaterali.

Codice manutenibile, facile da refactoring

Questo è ovvio. Con il codice, che è così pulito, facile da testare ed eseguire il debug, si finisce anche con un codice molto manutenibile. Questo è un aspetto importante che tiene a mente il futuro. Anni / mesi dopo se il tuo software deve avere funzionalità aggiuntive e refactoring, il codice che comprende un sacco di funzioni pure sarà estremamente intuitivo da ricalcolare. Non avranno effetti collaterali esterni di cui lo sviluppatore dovrebbe preoccuparsi. Anche i nuovi sviluppatori del team possono svolgere questo compito con facilità.

Un esempio reale che utilizza funzioni Pure

Redux è così popolare e la maggior parte di noi lo ha usato in alcuni progetti o ne ha sentito parlare. I riduttori sono funzioni che fanno parte del modello Redux e svolgono un ruolo cruciale. La caratteristica più importante dei riduttori redux è che sono Funzioni Pure.

I riduttori sono funzioni pure che assumono uno stato e un’azione e restituiscono un nuovo stato.

function(state, action) => newState

I riduttori sono la parte principale dell’integrazione Redux e contengono molta della logica di business. E poiché redux impone che i riduttori devono essere funzioni pure senza effetti collaterali, finiamo con funzioni molto eleganti e semplici che sono facilmente mantenibili

Redux è un classico esempio di scrittura di funzioni pure. Trae ispirazione dalla programmazione funzionale e ha riscosso un enorme successo negli ultimi anni. È molto utilizzato nelle moderne applicazioni web per la gestione dello stato. Ora conosci la ragione del suo successo, t è il requisito di scrivere funzioni pure. Ciò rende il codice testabile, pulito, più facile da eseguire il debug e manutenibile.

Conclusione

Abbiamo esaminato come scrivere funzioni Pure può avvantaggiarti e mantenere il tuo codice semplice ed elegante. Tieni presente che le funzioni Pure non sono limitate a JavaScript. Questo concetto può essere adottato in qualsiasi linguaggio di programmazione di vostra scelta. Funziona bene con JavaScript e qualsiasi linguaggio di programmazione funzionale.

Se stai cercando di migliorare le tue abilità JavaScript, consiglio vivamente il corso di Mosh su JavaScript.

Controlla tutti i corsi JavaScript qui: https://codewithmosh.com/p/full-stack-javascript-developer-bundle

Se ti è piaciuto questo post, si prega di diffondere la parola e condividerlo. Controllare di nuovo fore più messaggi.

Adhithi Ravichandran è un consulente software con sede a Kansas City. Attualmente sta lavorando alla creazione di app con React, React Native e GraphQL. Lei è un relatore di conferenza, Pluralsight Autore, Blogger e consulente software. È appassionata di insegnamento e prospera per contribuire alla comunità tecnologica con i suoi corsi, post sul blog e impegni di conversazione.

Tag: javascript, Funzioni pure

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.