1. juli, 2019

JavaScript-udviklere omfavner funktionel programmering ganske meget i disse dage, og der er en enorm fortalervirksomhed for at skrive rene funktioner. Hvad er rene funktioner? For ikke længe siden lærte jeg begrebet rene funktioner, og til min overraskelse skrev jeg allerede mange rene funktioner uden at indse, at der var et udtryk for det.

rene funktioner

hvad kvalificerer som en ren funktion?

en funktion betragtes som ren, hvis den overholder følgende regler:

  1. funktionen returnerer altid det samme output, hvis de samme argumenter sendes ind.
  2. funktionen giver ingen bivirkninger.

vi har alle skrevet rene funktioner i fortiden bevidst eller ubevidst.
Tag et kig på en ren funktion nedenfor, der returnerer en sum af to tal givet to input argumenter.

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

udgangen af denne funktion forbliver altid den samme, hvis de samme inputargumenter sendes ind. Simpelt nok. Rene funktioner er enkle byggesten, der altid har en forudsigelig opførsel. Derfor returnerer de altid det samme forudsigelige output uden nogen ekstern indflydelse.

her er et simpelt eksempel på, hvordan en uren funktion ser ud.

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

her betragtes funktionen som uren, fordi den ikke bruger det argument, der blev sendt til det. I stedet bruger den en ekstern værdi, der kan ændres. Derfor gør funktionen uren på grund af ekstern interferens/bivirkninger.

Okay, lad os tale om kravet to om bivirkninger.

Hvad er bivirkninger?

bivirkninger opstår når som helst din funktion interagerer med omverdenen.

nogle eksempler på almindelige bivirkninger omfatter:

  • gør et API-opkald
  • muterende data
  • console logs til skærmen
  • manipulering af DOM
  • Dato.nu () for at få den aktuelle dato/tid
  • async afventer opkald/venter på løfter om at løse
  • matematik.tilfældig () for at generere tilfældige tal

nå kan du undre dig over, hvordan vi kan skrive funktioner uden bivirkninger hele tiden. Det er ganske vanskeligt at undgå bivirkninger helt. Alt jeg siger er, for en funktion at kvalificere sig som ren, som navnet antyder, bør det ikke have nogen bivirkninger.

hvad får jeg ved at skrive rene funktioner?

 rene funktioner

Pic høflighed: Picpedia.Org

Okay, vi fik definitionerne af vejen. Du kan nu spørge, hvad er det fordele.

test er let

Forestil dig, du har en masse rene funktioner, der kun gør en ting. De har ingen eksterne bivirkninger, og de returnerer altid forudsigelig output. Disse funktioner vil være så meget lettere at teste, end en funktion, der har en masse afhængigheder og uforudsigelig adfærd. At skrive ren, testbar kode hjælper med at forbedre din kodekvalitet drastisk.

Debugging kode er ikke en smerte

med rene funktioner, debugging kode vil ikke være en stor smerte, sammenlignet med debugging urene funktioner. Hvis du løber ind i et problem eller en fejl, og du har indsnævret det til en ren funktion, kan du være sikker på, at du ikke behøver at se uden for omfanget af denne funktion for at finde problemet. Derfor drastisk forbedring af udviklerens debugging oplevelse.

Memoisering for at forbedre ydeevnen

med rene funktioner er det garanteret at returnere det samme output for en given indgang. Dette skaber mulighed for memoisering. Når den samme indgang overføres til en funktion, kan den trække resultaterne fra en cache, hvilket får appen til at fungere hurtigere. Caching kan spare masser af ressourcer og forbedre ydeevnen. Og caching pure-funktioner kan udføres uden bekymring, da de er forudsigelige uden bivirkninger.

vedligeholdelig kode, let at refactor

dette er en indlysende. Med kode, der er så ren, let at teste og debug, du ender med meget vedligeholdelig kode samt. Dette er et vigtigt aspekt, der holder fremtiden i tankerne. År / måneder senere, hvis dit program skal have yderligere funktioner og refactoring, vil koden, der består af en masse rene funktioner, være ekstremt intuitiv at re-faktor. De vil ikke have nogen eksterne bivirkninger, som udvikleren skulle bekymre sig om. Selv nye udviklere på holdet kan tage op på denne opgave med lethed.

et eksempel i den virkelige verden, der bruger rene funktioner

er så populært, og de fleste af os har enten brugt det i nogle projekter eller har hørt om det. Reduktionsmidler er funktioner, der er en del af Reduks-mønsteret og spiller en afgørende rolle. Det vigtigste træk ved reduks reduktionsgear er, at de er rene funktioner.

reduktionsmidler er rene funktioner, der tager en tilstand og handling og returnerer en ny tilstand.

function(state, action) => newState

Reducers er den største del af integrationen og har meget af forretningslogikken. Og da reduce håndhæver, at reduktionsanordningerne skal være rene funktioner uden bivirkninger, ender vi med meget elegante og enkle funktioner, der let kan vedligeholdes

reduce er et klassisk eksempel på at skrive rene funktioner. Det henter inspiration fra funktionel programmering og har fået enorm popularitet i de sidste par år. Det bruges stærkt i moderne internetapplikationer til statsforvaltning. Nu ved du årsagen til dens succes, t er det krav at skrive rene funktioner. Dette gør koden testbar, ren, lettere at debug og vedligeholdes.

konklusion

vi undersøgte, hvordan skrivning af rene funktioner kan gavne dig og holde din kode Enkel og elegant. Husk, at Pure-funktioner ikke er begrænset til JavaScript. Dette koncept kan vedtages på ethvert programmeringssprog efter eget valg. Det fungerer godt med JavaScript og ethvert funktionelt programmeringssprog.

hvis du ønsker at forbedre dine JavaScript-færdigheder, anbefaler jeg stærkt Moshs kursus om JavaScript.

Tjek alle JavaScript kurser her: https://codewithmosh.com/p/full-stack-javascript-developer-bundle

hvis du nød dette indlæg, spred venligst ordet og del det. Kom tilbage igen for flere indlæg.

Adhithi Ravichandran er en konsulent med base i Kansas City. Hun arbejder i øjeblikket på at opbygge apps med React, React Native og Graphkl. Hun er en konference højttaler, Pluralsight forfatter, Blogger og programmel konsulent. Hun brænder for undervisning og trives med at bidrage til det tekniske samfund med sine kurser, blogindlæg og taleforpligtelser.

Tags: javascript, rene funktioner

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.