1. juli, 2019

JavaScript-utviklere omfavner Funksjonell Programmering ganske mye i disse dager, og det er en stor advocacy å skrive Rene Funksjoner. Hva Er Rene Funksjoner? For ikke lenge siden lærte jeg begrepet Rene Funksjoner, og til min overraskelse skrev jeg allerede mange rene funksjoner uten å innse at det var et begrep for det.

 Rene Funksjoner

hva kvalifiserer Som En Ren Funksjon?

en funksjon betraktes som ren, hvis den overholder følgende regler:

  1. funksjonen returnerer alltid samme utgang hvis de samme argumentene sendes inn.
  2. funksjonen gir ingen bivirkninger.

Vi har alle skrevet rene funksjoner i fortiden bevisst eller ubevisst.
Ta en titt på en ren funksjon nedenfor, som returnerer en sum av to tall gitt to inngangsargumenter.

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

utgangen av denne funksjonen vil alltid forbli den samme hvis de samme inndataargumentene sendes inn. Enkelt nok. Rene funksjoner er enkle byggesteiner som alltid har en forutsigbar oppførsel. Derfor returnerer de alltid den samme forutsigbare produksjonen, uten ekstern påvirkning.

Her er et enkelt eksempel på hvordan en uren funksjon ser ut.

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

her anses funksjonen som uren, fordi den ikke bruker argumentet som ble sendt til det. I stedet bruker den en ekstern verdi som kan endres. Derfor gjør funksjonen uren på grunn av ekstern forstyrrelse / bivirkninger.

Ok, la Oss snakke om kravet to på bivirkninger.

Hva Er Bivirkninger?

Bivirkninger oppstår når funksjonen din samhandler med omverdenen.

noen eksempler på vanlige bivirkninger inkluderer:

  • Foreta ET API-kall
  • Muterende data
  • konsolllogger til skjermen
  • Manipulere DOM
  • Dato.nå() for å få gjeldende dato/klokkeslett
  • async venter på samtaler / venter på løfter om å løse
  • math.tilfeldig () for å generere tilfeldige tall

vel, du lurer kanskje på hvordan vi kan skrive funksjoner uten bivirkninger hele tiden. Det er ganske utfordrende å unngå bivirkninger helt. Alt jeg sier er, for en funksjon å kvalifisere som ren, som navnet antyder, bør det ikke ha noen bivirkninger.

Hva får jeg ved å skrive Rene Funksjoner?

 Rene Funksjoner

bilde høflighet: Picpedia.Org

Ok, vi fikk definisjonene ut av veien. Du kan nå spørre hva er det fordeler.

Testing er enkelt

Tenk deg, Du har en haug med rene funksjoner, som bare gjør en ting. De har ingen eksterne bivirkninger, og de returnerer alltid forutsigbar utgang. Disse funksjonene vil være så mye lettere å teste enn en funksjon som har en rekke avhengigheter og uforutsigbar oppførsel. Skrive ren, testbar kode vil bidra til å forbedre kodekvaliteten drastisk.

Feilsøkingskode er ikke en smerte

med rene funksjoner vil feilsøkingskoden ikke være en stor smerte, sammenlignet med feilsøking av urene funksjoner. Hvis du støter på et problem eller en feil, og du har redusert det til en ren funksjon, kan du være trygg på at du ikke trenger å se utenfor omfanget av den funksjonen for å finne problemet. Derfor drastisk forbedre utviklerens debugging erfaring.

Memoization for å forbedre ytelsen

med rene funksjoner, er det garantert å returnere samme utgang for en gitt inngang. Dette skaper mulighet for memoization. Når samme inngang sendes videre til en funksjon, kan den trekke resultatene fra en cache, noe som gjør appen raskere. Caching kan spare tonnevis av ressurser og forbedre ytelsen. Og caching pure funksjoner kan gjøres uten bekymring, siden de er forutsigbare uten bivirkninger.

Vedlikeholdbar kode, lett å refactor

Dette er en åpenbar. Med kode, som er så ren, lett å teste og feilsøke, ender du opp med svært vedlikeholdbar kode også. Dette er et viktig aspekt som holder fremtiden i tankene. År / måneder senere hvis programvaren må ha flere funksjoner, og refactoring, koden som består av haug med rene funksjoner vil være svært intuitivt å re-faktor. De vil ikke ha noen eksterne bivirkninger som utvikleren trenger å bekymre seg for. Selv nye utviklere på laget kan ta opp denne oppgaven med letthet.

Et Ekte eksempel som bruker Rene Funksjoner

Redux er så populært, og de fleste av oss har enten brukt det i noen prosjekter eller har hørt om det. Reduksjonsgir er funksjoner som er en del Av Redux-mønsteret og spiller en avgjørende rolle. Det viktigste ved redux reduksjonsgir er At de Er Rene Funksjoner.

Reduksjonsgir er rene funksjoner som tar i en tilstand og handling og returnere en ny tilstand.

function(state, action) => newState

Redux-reduksjonsgir er den viktigste delen Av Redux-integrasjonen og holder mye av forretningslogikken. Og siden redux håndhever at redux må være rene funksjoner uten bivirkninger, ender Vi opp med svært elegante og enkle funksjoner som lett kan vedlikeholdes

Redux er et klassisk eksempel på å skrive rene funksjoner. Den henter inspirasjon fra funksjonell programmering og har fått enorm popularitet de siste årene. Det er tungt brukt i moderne webapplikasjoner for statlig styring. Nå vet du årsaken bak sin suksess, t er det krav til å skrive rene funksjoner. Dette gjør koden testbar, ren, enklere å feilsøke og vedlikeholdsbar.

Konklusjon

Vi så på hvordan å skrive Rene Funksjoner kan være til nytte for deg og holde koden enkel og elegant. Husk at Pure-Funksjoner ikke er begrenset Til JavaScript. Dette konseptet kan vedtas i ethvert programmeringsspråk etter eget valg. Det fungerer bra med JavaScript og alle funksjonelle programmeringsspråk.

hvis du ønsker å forbedre JavaScript-ferdighetene dine, anbefaler Jeg Moshs kurs På JavaScript.

Sjekk Ut Alle JavaScript-kursene her: https://codewithmosh.com/p/full-stack-javascript-developer-bundle

hvis du likte dette innlegget, vennligst spre ordet og del det. Sjekk tilbake igjen for flere innlegg.

Adhithi Ravichandran Er En Programvarekonsulent basert I Kansas City. Hun jobber for tiden med å bygge apper Med React, React Native og GraphQL. Hun Er Konferansetaler, Pluralsight Forfatter, Blogger Og Programvarekonsulent. Hun er lidenskapelig opptatt av undervisning og trives med å bidra til tech samfunnet med sine kurs, blogginnlegg og foredrag.

Tags: javascript, Rene Funksjoner

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.