július 1, 2019

a JavaScript fejlesztők manapság nagyon sokat foglalkoznak a funkcionális programozással, és hatalmas érdekképviselet áll rendelkezésre a tiszta funkciók írására. Mik azok a tiszta funkciók? Nem is olyan régen megtanultam a tiszta függvények fogalmát, és meglepetésemre már sok tiszta függvényt írtam, anélkül, hogy rájöttem volna, hogy van erre egy kifejezés.

tiszta funkciók

mi minősül tiszta funkciónak?

egy függvény akkor tekinthető tisztának, ha betartja a következő szabályokat:

  1. a függvény mindig ugyanazt a kimenetet adja vissza, ha ugyanazok az argumentumok kerülnek átadásra.
  2. a funkció nem okoz semmilyen mellékhatást.

mindannyian tiszta funkciókat írtunk a múltban tudatosan vagy tudatlanul.
vessen egy pillantást az alábbi tiszta függvényre,amely két szám összegét adja vissza, két bemeneti argumentummal.

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

ennek a függvénynek a kimenete mindig ugyanaz marad, ha ugyanazok a bemeneti argumentumok kerülnek átadásra. Elég egyszerű. A tiszta funkciók egyszerű építőelemek, amelyek mindig kiszámítható viselkedést mutatnak. Ezért mindig ugyanazt a kiszámítható kimenetet adják vissza, külső befolyás nélkül.

íme egy egyszerű példa arra, hogyan néz ki egy tisztátalan függvény.

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

itt a függvény tisztátalannak tekinthető, mert nem használja az átadott érvet. Ehelyett egy külső értéket használ, amely változhat. Ezért a funkciót külső interferencia/mellékhatások miatt tisztátalanná teszi.

rendben, beszéljünk a mellékhatások két követelményéről.

mik a mellékhatások?

a mellékhatások bármikor előfordulhatnak, amikor a funkció kölcsönhatásba lép a külvilággal.

néhány példa a gyakori mellékhatásokra:

  • API hívás kezdeményezése
  • adatok mutálása
  • konzol naplózza a képernyőt
  • a DOM
  • Dátum manipulálása.most (), hogy az aktuális dátum/idő
  • aszinkron várja hívások/vár ígéri, hogy megoldja
  • math.véletlen() a véletlen számok

Nos, akkor csoda, hogyan tudunk írni funkciók mellékhatások nélkül minden alkalommal. Ez elég nehéz, hogy elkerüljék a mellékhatások teljesen. Csak azt mondom, hogy ahhoz, hogy egy funkció tisztának minősüljön, ahogy a neve is sugallja, nincs mellékhatása.

mit nyerhetek tiszta függvények írásával?

 tiszta funkciók

Kép jóvoltából: Picpedia.Org

rendben, a definíciókat eltettük az útból. Most megkérdezheti, hogy milyen előnyei vannak.

a tesztelés egyszerű

képzelje el, hogy van egy csomó tiszta funkciója, amelyek csak egy dolgot csinálnak. Nincs külső mellékhatásuk, és mindig kiszámítható kimenetet adnak vissza. Ezeket a függvényeket sokkal könnyebb tesztelni, mint egy olyan függvényt, amely egy csomó függőséggel és kiszámíthatatlan viselkedéssel rendelkezik. A tiszta, tesztelhető kód írása drasztikusan javítja a kód minőségét.

hibakeresési kód nem fájdalom

tiszta funkciókkal, a hibakeresési kód nem lesz nagy fájdalom, mint a tisztátalan funkciók hibakeresése. Ha problémába vagy hibába ütközik, és egy tiszta függvényre szűkítette, akkor biztos lehet benne, hogy nem kell a függvény hatókörén kívülre néznie, hogy megtalálja a problémát. Ezért drasztikusan javítja a fejlesztő hibakeresési élményét.

Memoization a teljesítmény javítása érdekében

tiszta funkciókkal garantáltan ugyanazt a kimenetet adja vissza egy adott bemenethez. Ez lehetőséget teremt a memoizációra. Ha ugyanazt a bemenetet továbbítják egy funkciónak, akkor az eredményeket egy gyorsítótárból húzhatja ki, így az alkalmazás gyorsabban teljesít. A gyorsítótárazás rengeteg erőforrást takaríthat meg és javíthatja a teljesítményt. A tiszta funkciók gyorsítótárazása minden gond nélkül elvégezhető, mivel kiszámíthatóak mellékhatások nélkül.

karbantartható kód, könnyen refactor

ez nyilvánvaló. A kód, amely annyira tiszta, könnyen tesztelhető és hibakeresés, akkor a végén nagyon karbantartható kódot is. Ez egy fontos szempont, amely szem előtt tartja a jövőt. Évekkel/hónapokkal később, ha a szoftvernek további funkciókkal és refaktorálással kell rendelkeznie, a kód, amely egy csomó tiszta funkciót tartalmaz, rendkívül intuitív lesz az újrafestéshez. Nem lesznek olyan külső mellékhatásai, amelyek miatt a fejlesztőnek aggódnia kellene. Még a csapat új fejlesztői is könnyedén felvehetik ezt a feladatot.

egy valós példa, amely tiszta funkciókat használ

Redux annyira népszerű, és a legtöbben vagy használták néhány projektben, vagy hallottak róla. A reduktorok olyan funkciók, amelyek a Redux minta részét képezik, és döntő szerepet játszanak. A redux reduktorok legfontosabb jellemzője, hogy tiszta funkciók.

a reduktorok tiszta funkciók, amelyek egy állapotot és műveletet vesznek fel, és új állapotot adnak vissza.

function(state, action) => newState

reduktorok A Redux integráció fő részét képezik, és sok üzleti logikát tartalmaznak. És mivel a redux kikényszeríti, hogy a reduktoroknak tiszta funkcióknak kell lenniük, mellékhatások nélkül, nagyon elegáns és egyszerű funkciókat kapunk, amelyek könnyen karbantarthatók

A Redux A tiszta funkciók írásának klasszikus példája. A funkcionális programozásból származik, és az elmúlt években óriási népszerűségre tett szert. Erősen használják a modern webes alkalmazásokban az állami irányításhoz. Most már tudja a sikerének okát, t az a követelmény, hogy tiszta függvényeket írjon. Ez teszi a kódot tesztelhetővé, tisztává, könnyebben hibakereshetővé és karbantarthatóvá.

következtetés

megvizsgáltuk, hogy a tiszta funkciók írása milyen előnyökkel jár, és a kód egyszerű és elegáns. Ne feledje, hogy a tiszta funkciók nem korlátozódnak a JavaScript-re. Ezt a koncepciót bármilyen választott programozási nyelven el lehet fogadni. Jól működik a JavaScript és bármely funkcionális programozási nyelv.

ha keres, hogy javítsa a JavaScript készségek, én nagyon ajánlom Mosh természetesen a JavaScript.

nézze meg az összes JavaScript tanfolyamot itt: https://codewithmosh.com/p/full-stack-javascript-developer-bundle

ha tetszett ez a bejegyzés, kérjük, terjessze a hírt, és ossza meg. Nézzen vissza újra a További bejegyzések előtt.

Adhithi Ravichandran egy szoftver tanácsadó székhelye Kansas City. Jelenleg a React, a React Native és a GraphQL alkalmazásokon dolgozik. Konferencia előadó, Pluralsight szerző, Blogger és szoftver tanácsadó. Szenvedélyesen tanít és virágzik, hogy tanfolyamaival, blogbejegyzéseivel és beszédeivel hozzájáruljon a tech közösséghez.

címkék: javascript, tiszta funkciók

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.