Puhtaiden toimintojen kanssa työskentely voi olla paljon vähemmän stressaavaa, koska voit testata niitä helposti ja perustella niitä varmemmin.

Puhtaat funktiot ovat toimintoja, jotka eivät tuota sivuvaikutuksia, ja kun niitä kutsutaan samoilla syöttöparametreilla, ne palauttavat aina saman tulosteen.

Voit käyttää puhtaita toimintoja varmistaaksesi, että koodisi on puhdas, ylläpidettävä ja testattava. Nämä toiminnot ovat ihanteellisia näihin tehtäviin, koska ne ovat ennakoitavissa eivätkä muuta ulkoisia tiloja.

Niitä on myös helpompi korjata, mikä tekee niistä hyödyllisiä monimutkaisten ohjelmistojärjestelmien kehittämisessä. Täällä voit tutkia puhtaita JavaScriptin toimintoja, niiden ominaisuuksia ja etuja.

Puhtaan funktion ominaisuudet

varten toiminto ollakseen "puhdas", sen on täytettävä muutama vaatimus.

Jatkuva palautusarvo

Puhtaan funktion tulee aina palauttaa sama arvo samalla syötteellä riippumatta siitä, kuinka monta kertaa sitä kutsutaan.

Harkitse esimerkiksi alla olevaa toimintoa:

toimintomoninkertaistaa(a, b) {
palata a * b;
}
instagram viewer

The moninkertaistaa funktio yllä olevassa esimerkissä palauttaa aina kahden argumenttinsa tulon. Kun otetaan huomioon sama argumenttijoukko, sillä on vakio palautusarvo.

Kun tätä funktiota kutsutaan useita kertoja samoilla argumenteilla, saadaan joka kerta sama tulos. Esimerkiksi:

kertoa(2, 3); // palauttaa 6
kertoa(2, 3); // palauttaa 6
kertoa(2, 3); // palauttaa 6

Vaihtoehtoisesti harkitse alla olevaa esimerkkiä:

toimintomultiplyRandomNumber(nro) {
palata numero * Matematiikka.lattia(Matematiikka.random() * 10);
}

multiplyRandomNumber(5); // Ennalta arvaamattomia tuloksia
multiplyRandomNumber(5); // Ennalta arvaamattomia tuloksia
multiplyRandomNumber(5); // Ennalta arvaamattomia tuloksia

The multiplyRandomNumber Yllä oleva toiminto palauttaa erilaisia ​​tuloksia joka kerta kun kutsut sitä, mikä tekee siitä epäpuhdasta. Tämän toiminnon tulokset ovat arvaamattomia, joten siihen perustuvien komponenttien testaus on vaikeaa.

Ei sivuvaikutuksia

Puhdas toiminto ei saa aiheuttaa sivuvaikutuksia. Sivuvaikutus viittaa mihin tahansa tilan tai käyttäytymisen muutoksiin funktion soveltamisalan ulkopuolella, kuten globaalien muuttujien, konsolin lähtöjen, verkkopyyntöjen tai DOM-manipulaatioiden muokkaamiseen.

Kun puhtaalla toiminnalla on sivuvaikutus, se ei ole enää puhdas, koska se vaikuttaa ulkoiseen tilaan ja rikkoo periaatetta, ettei sillä ole havaittavia sivuvaikutuksia. Siksi puhtaat toiminnot välttävät sivuvaikutuksia varmistaakseen, etteivät ne muuta ohjelman tilaa.

Harkitse esimerkiksi alla olevaa esimerkkiä:

antaa laske = 0;

toimintolisäys() {
count++;
konsoli.log (count);
}

lisäys(); // Lokit 1
lisäys(); // Lokit 2
lisäys(); // Lokit 3

The lisäys -toiminnolla tässä esimerkissä on sivuvaikutuksena, että se muuttaa Kreivi muuttuja sen soveltamisalan ulkopuolella. Se kirjautuu myös konsoliin.

Tämä toiminto ei ole puhdas, koska sillä on sivuvaikutus, joka voi vaikeuttaa sen tulosteen ennustamista ja testausta erikseen. Jotta se olisi puhdas, voit muokata sitä niin, että se sisältää Kreivi muuttuja argumenttina ja palauttaa lisätyn arvon muuttamatta mitään ulkoista tilaa.

Niin kuin:

toimintolisäys(Kreivi) {
palata laske + 1;
}

lisäys(1); // palauttaa 2
lisäys(1); // palauttaa 2
lisäys(1); // palauttaa 2

Versio lisäys funktiolla yllä olevassa esimerkissä ei ole sivuvaikutuksia, koska se ei muuta mitään ulkoista muuttujaa tai kirjaa mitään arvoa. Lisäksi riippumatta siitä, kuinka monta kertaa kutsut sitä, se palauttaa saman arvon samalle tulolle. Siksi se on puhdas toiminto.

Muut ominaisuudet

Sen lisäksi, että palautusarvo on vakio etkä aiheuta sivuvaikutuksia, sinun tulee noudattaa seuraavia sääntöjä, kun olet JavaScript-funktion luominen jonka haluat olla puhdas:

  • Funktiosi ei saa muuttaa mitään sen argumentteja. Sen sijaan, jos jokin toiminto vaatii mutaatiota, tee kopio argumentista ja mutatoi kopio.
  • Funktiolla on aina oltava palautusarvo. Jos funktiollasi ei ole palautusarvoa tai sivuvaikutuksia, se ei voi tehdä mitään!
  • Toiminto ei saa olla riippuvainen mistään ulkoisesta tilasta.

Puhtaiden toimintojen edut

Puhtailla funktioilla on tiettyjä etuja epäpuhtaisiin funktioihin verrattuna, joista osa sisältää seuraavat.

Testattavuus

Puhtaita toimintoja on helppo testata, koska niiden syöttö/tulostuskäyttäytyminen on hyvin määritelty. Myöskään puhtaat toiminnot eivät ole riippuvaisia ​​ulkoisesta tilasta tai sivuvaikutuksista. Siksi voit testata niitä erillään ilman, että sinun tarvitsee huolehtia riippuvuuksista tai vuorovaikutuksista ohjelman muiden osien kanssa.

Sitä vastoin ulkoisesta tilasta riippuvien tai sivuvaikutuksia aiheuttavien epäpuhtaiden toimintojen testaus voi olla haastavampaa, koska niiden käyttäytyminen voi riippua ohjelman tilasta tai muista ulkoisista tekijöistä. Tämä voi vaikeuttaa kattavien testitapausten luomista ja varmistaa, että toiminto toimii oikein kaikissa skenaarioissa.

Memoisointi

Koska puhtaat funktiot tuottavat aina saman tulosteen samalle tulolle eivätkä aiheuta sivuvaikutuksia, voit helposti muistaa ne.

Luottamalla näihin ominaisuuksiin ja käyttämällä muistiinpanoa, voit tallentaa välimuistiin puhtaan funktiokutsun tuloksen tietylle syötteelle. Funktiosi voi sitten palauttaa välimuistissa olevan tuloksen seuraavan kerran, kun sitä kutsutaan samalla syötteellä.

Puhtaiden toimintojen muistaminen voi parantaa ohjelman suorituskykyä, erityisesti kalliissa laskelmissa, jotka käsittelevät toistuvasti samaa syötettä, ilman huolta ohjelman tilan häiriintymisestä.

Sitä vastoin epäpuhtaat funktiot voivat tuottaa erilaisia ​​tuloksia samalle syötteelle riippuen ohjelman tilasta tai ulkoisista tekijöistä. Tämä tekee niistä haastavia muistiin tallentamisesta, koska välimuistissa oleva tulos ei ehkä enää ole kelvollinen, jos funktion riippuvuudet tai ulkoinen tila muuttuvat kutsujen välillä.

Samanaikaisuus

Koska puhtaat toiminnot eivät muuta mitään ulkoista tilaa tai aiheuta sivuvaikutuksia, ne ovat lankaturvallisia. Voit ajaa niitä samanaikaisesti murehtimatta kilpailuolosuhteista tai synkronointiongelmista.

Sitä vastoin epäpuhtaat funktiot voivat olla haastavia suorittaa samanaikaisesti, koska ne voivat häiritä toisiaan tai aiheuttaa odottamatonta käyttäytymistä, kun niitä suoritetaan rinnakkain. Jos esimerkiksi kaksi säiettä käyttää ja muokkaa samaa globaalia muuttujaa, ne voivat korvata toistensa muutokset tai tuottaa epäjohdonmukaisia ​​tuloksia.

Puhtaat funktiot vs. Epäpuhtaat toiminnot

Voit kirjoittaa ohjelmia käyttämällä puhtaiden ja epäpuhtaiden funktioiden yhdistelmää, koska jokaisella tyypillä on käyttötarkoituksensa.

Puhtaita toimintoja on helppo optimoida, testata ja rinnastaa, joten ne sopivat käyttötapauksiin, kuten toiminnalliseen ohjelmointiin, välimuistiin, testaukseen, rinnakkaisohjelmointiin ja tietojenkäsittelytehtäviin.

Epäpuhtaat toiminnot asettavat kuitenkin haasteita testauksessa ja samanaikaisuudessa, mutta niistä on apua, kun työskennellään muuttuvien tietorakenteiden kanssa tai vuorovaikutuksessa ulkoisten järjestelmien ja resurssien kanssa.