1. července, 2019

vývojáři JavaScriptu v dnešní době hodně přijímají funkční programování, a existuje obrovská obhajoba psaní čistých funkcí. Co jsou to čisté funkce? Nedávno jsem se naučil pojem čisté funkce a k mému překvapení jsem již psal mnoho čistých funkcí, aniž bych si uvědomil, že pro to existuje termín.

 čisté funkce

co se kvalifikuje jako čistá funkce?

funkce se považuje za čistou, pokud dodržuje následující pravidla:

  1. funkce vždy vrátí stejný výstup, pokud jsou předány stejné argumenty.
  2. funkce nevyvolává žádné vedlejší účinky.

všichni jsme psali čisté funkce v minulosti vědomě nebo nevědomě.
podívejte se na čistou funkci níže, která vrací součet dvou čísel zadaných dvěma vstupními argumenty.

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

výstup této funkce zůstane vždy stejný, pokud jsou předány stejné vstupní argumenty. Dost jednoduché. Čisté funkce jsou jednoduché stavební kameny, které mají vždy předvídatelné chování. Proto vždy vracejí stejný předvídatelný výstup bez jakéhokoli vnějšího vlivu.

zde je jednoduchý příklad, jak vypadá nečistá funkce.

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

zde je funkce považována za nečistou, protože nepoužívá argument, který jí byl předán. Místo toho používá externí hodnotu, která se může změnit. Proto je funkce nečistá kvůli vnějšímu rušení / vedlejším účinkům.

dobře, promluvme si o požadavku dva na vedlejší účinky.

jaké jsou nežádoucí účinky?

nežádoucí účinky se vyskytují kdykoli vaše funkce interaguje s vnějším světem.

některé příklady častých nežádoucích účinků zahrnují:

  • volání API
  • mutace dat
  • protokoly konzoly na obrazovku
  • manipulace s DOM
  • Datum.nyní () chcete-li získat aktuální datum / čas
  • async čekají na volání / čekání na sliby vyřešit
  • math.random () pro generování náhodných čísel

No, možná se divíte, jak můžeme psát funkce bez vedlejších účinků po celou dobu. Je docela náročné vyhnout se vedlejším účinkům úplně. Vše, co říkám, je, aby funkce byla kvalifikována jako čistá, jak název napovídá, neměla by mít žádné vedlejší účinky.

co získám psaním čistých funkcí?

čisté funkce

obrázek s laskavým svolením: Picpedia.Org

v pořádku, dostali jsme definice z cesty. Nyní se můžete zeptat, jaké jsou jeho výhody.

testování je snadné

Představte si, že máte spoustu čistých funkcí, které dělají jen jednu věc. Nemají žádné vnější vedlejší účinky a vždy vracejí předvídatelný výstup. Tyto funkce bude mnohem jednodušší testovat, než funkce, která má spoustu závislostí a nepředvídatelné chování. Psaní čisté, testovatelné kód pomůže zlepšit kvalitu kódu drasticky.

ladění kódu není bolest

s čistými funkcemi, ladění kódu nebude velkou bolestí ve srovnání s laděním nečistých funkcí. Pokud narazíte na problém nebo chybu a zúžili jste ji na čistou funkci, můžete si být jisti, že se nemusíte dívat mimo rozsah této funkce, abyste problém našli. Proto drasticky zlepšíte ladění vývojáře.

Memoizace pro zlepšení výkonu

s čistými funkcemi je zaručeno, že vrátí stejný výstup pro daný vstup. To vytváří možnost memoizace. Když je stejný vstup předán funkci, může vytáhnout výsledky z mezipaměti, díky čemuž aplikace funguje rychleji. Ukládání do mezipaměti může ušetřit spoustu zdrojů a zlepšit výkon. A ukládání do mezipaměti čisté funkce lze provést bez obav, protože jsou předvídatelné bez vedlejších účinků.

udržovatelný kód, snadno refaktor

to je zřejmé. S kódem, který je tak čistý, snadno se testuje a ladí, skončíte také s velmi udržovatelným kódem. To je důležitý aspekt, který udržuje budoucnost v paměti. Roky / měsíce později, pokud váš software musí mít další funkce, a refaktoring, kód, který se skládá z banda čistých funkcí bude velmi intuitivní re-faktor. Nebudou mít žádné vnější vedlejší účinky, které by se vývojář musel obávat. Dokonce i noví vývojáři v týmu se mohou tohoto úkolu snadno ujmout.

skutečný příklad, který používá čisté funkce

Redux je tak populární a většina z nás ji buď použila v některých projektech, nebo o ní slyšela. Reduktory jsou funkce, které jsou součástí reduxova vzoru a hrají klíčovou roli. Nejdůležitějším rysem reduktorů redux je to, že jsou to čisté funkce.

reduktory jsou čisté funkce, které přijímají stav a akce a vracejí nový stav.

function(state, action) => newState

reduktory jsou hlavní částí integrace Redux a drží hodně obchodní logiky. A protože redux prosazuje, že reduktory musí být čisté funkce bez vedlejších účinků, skončíme s velmi elegantními a jednoduchými funkcemi, které lze snadno udržovat

Redux je klasickým příkladem psaní čistých funkcí. Čerpá inspiraci z funkčního programování a v posledních několika letech si získal obrovskou popularitu. Je silně používán v moderních webových aplikacích pro správu státu. Nyní znáte důvod jeho úspěchu, t Je to požadavek psát čisté funkce. Díky tomu je Kód testovatelný, čistý, snadněji laditelný a udržovatelný.

závěr

podívali jsme se na to, jak vám psaní čistých funkcí může prospět a udržet váš kód jednoduchý a elegantní. Mějte na paměti, že čisté funkce nejsou omezeny na JavaScript. Tento koncept lze přijmout v libovolném programovacím jazyce podle vašeho výběru. Funguje dobře s JavaScriptem a jakýmkoli funkčním programovacím jazykem.

pokud chcete zlepšit své dovednosti v JavaScriptu, vřele doporučuji Moshův kurz JavaScriptu.

podívejte se na všechny kurzy JavaScriptu zde: https://codewithmosh.com/p/full-stack-javascript-developer-bundle

pokud se vám tento příspěvek líbil, prosím šířte slovo a sdílejte jej. Podívejte se znovu na další příspěvky.

Adhithi Ravichandran je softwarový konzultant se sídlem v Kansas City. V současné době pracuje na vytváření aplikací s React, React Native a GraphQL. Je přednášející konference, Autor Pluralsight, Blogger a softwarový konzultant. Je nadšená výukou a daří se jí přispívat do technologické komunity svými kurzy, blogové příspěvky a mluvení.

tagy: javascript, čisté funkce

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.