1 juli, 2019

JavaScript-utvecklare omfamnar funktionell programmering ganska mycket idag, och det finns ett stort förespråkande för att skriva rena funktioner. Vad är rena funktioner? För inte så länge sedan lärde jag mig begreppet rena funktioner, och till min förvåning skrev jag redan många rena funktioner utan att inse att det fanns en term för det.

 rena funktioner

vad kvalificerar sig som en ren funktion?

en funktion anses vara ren om den följer följande regler:

  1. funktionen returnerar alltid samma utdata om samma argument skickas in.
  2. funktionen ger inga biverkningar.

vi har alla skrivit rena funktioner i det förflutna medvetet eller omedvetet.
ta en titt på en ren funktion nedan, som returnerar en summa av två tal som ges två inmatningsargument.

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

utgången för denna funktion kommer alltid att förbli densamma om samma inmatningsargument skickas in. Enkelt nog. Rena funktioner är enkla byggstenar som alltid har ett förutsägbart beteende. Därför returnerar de alltid samma förutsägbara produktion, utan något yttre inflytande.

här är ett enkelt exempel på hur en oren funktion ser ut.

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

här anses funktionen vara oren, eftersom den inte använder argumentet som skickades till det. Istället använder den ett externt värde som kan komma att ändras. Därför gör funktionen oren på grund av yttre störningar/biverkningar.

Okej, låt oss prata om kravet två på biverkningar.

Vad är biverkningar?

biverkningar uppstår när din funktion interagerar med omvärlden.

några exempel på vanliga biverkningar inkluderar:

  • göra ett API-samtal
  • mutera data
  • konsolloggar till skärmen
  • manipulera DOM
  • datum.nu () för att få aktuellt datum / tid
  • async väntar på samtal/väntar på löften att lösa
  • math.random () för att generera slumptal

Tja, du kanske undrar hur vi kan skriva funktioner utan biverkningar hela tiden. Det är ganska svårt att undvika biverkningar helt och hållet. Allt jag säger är att för en funktion att kvalificera sig som ren, som namnet antyder, borde det inte ha några biverkningar.

vad får jag genom att skriva rena funktioner?

 rena funktioner

Pic artighet: Picpedia.Org

Okej, vi fick definitionerna ur vägen. Du kan nu fråga vad det är för fördelar.

testning är lätt

Tänk dig, du har en massa rena funktioner, som bara gör en sak. De har inga externa biverkningar och de returnerar alltid förutsägbar produktion. Dessa funktioner kommer att vara så mycket lättare att testa, än en funktion som har en massa beroenden och oförutsägbart beteende. Att skriva ren, testbar kod hjälper till att förbättra din kodkvalitet drastiskt.

Felsökningskod är inte en smärta

med rena funktioner, felsökningskod kommer inte att vara en stor smärta, jämfört med felsökning av orena funktioner. Om du stöter på ett problem eller en bugg, och du har minskat det till en ren funktion, kan du vara säker på att du inte behöver titta utanför omfattningen av den funktionen för att hitta problemet. Därför förbättrar utvecklarens felsökningsupplevelse drastiskt.

Memoization för att förbättra prestanda

med rena funktioner är det garanterat att returnera samma utgång för en given ingång. Detta skapar möjlighet till memoisering. När samma ingång överförs till en funktion kan den dra resultaten från en cache, vilket gör att appen fungerar snabbare. Caching kan spara massor av resurser och förbättra prestanda. Och caching rena funktioner kan göras utan oro, eftersom de är förutsägbara utan biverkningar.

underhållbar kod, lätt att refactor

Detta är uppenbart. Med kod, som är så ren, lätt att testa och felsöka, slutar du med mycket underhållbar kod också. Detta är en viktig aspekt som håller framtiden i åtanke. År / månader senare om din programvara måste ha ytterligare funktioner, och refactoring, kommer koden som består av massa rena funktioner vara extremt intuitivt att re-faktor. De kommer inte att ha några externa biverkningar som utvecklaren skulle behöva oroa sig för. Även nya utvecklare på laget kan ta upp denna uppgift med lätthet.

ett verkligt exempel som använder rena funktioner

Redux är så populärt och de flesta av oss har antingen använt det i vissa projekt eller hört talas om det. Reducerare är funktioner som ingår i Reduxmönstret och spelar en avgörande roll. Det viktigaste inslaget i redux reducers är att de är rena funktioner.

reducerare är rena funktioner som tar i ett tillstånd och handling och returnerar ett nytt tillstånd.

function(state, action) => newState

reducerare är den största delen av Redux-integrationen och har mycket av affärslogiken. Och eftersom redux verkställer att reducerarna måste vara rena funktioner utan biverkningar slutar vi med mycket eleganta och enkla funktioner som är lätt att underhålla

Redux är ett klassiskt exempel på att skriva rena funktioner. Det hämtar inspiration från funktionell programmering och har fått enorm popularitet de senaste åren. Det används starkt i moderna webbapplikationer för statshantering. Nu vet du orsaken till dess framgång, t är det krav på att skriva rena funktioner. Detta gör koden testbar, ren, lättare att felsöka och underhålla.

slutsats

vi tittade på hur att skriva rena funktioner kan gynna dig och hålla din kod enkel och elegant. Tänk på att rena funktioner inte är begränsade till JavaScript. Detta koncept kan antas i valfritt programmeringsspråk. Det fungerar bra med JavaScript och alla funktionella programmeringsspråk.

om du vill förbättra dina JavaScript-färdigheter rekommenderar jag starkt Moshs kurs om JavaScript.

kolla in alla JavaScript-kurser här: https://codewithmosh.com/p/full-stack-javascript-developer-bundle

om du gillade det här inlägget, snälla sprid ordet och dela det. Kom tillbaka igen för fler inlägg.

Adhithi Ravichandran är en Mjukvarukonsult baserad i Kansas City. Hon arbetar för närvarande med att bygga appar med React, React Native och GraphQL. Hon är konferenstalare, Pluralsight-författare, bloggare och Mjukvarukonsult. Hon brinner för undervisning och trivs med att bidra till teknikgemenskapen med sina kurser, blogginlägg och talande engagemang.

taggar: javascript, rena funktioner

Lämna ett svar

Din e-postadress kommer inte publiceras.