1 juli, 2019

JavaScript-ontwikkelaars omarmen functioneel programmeren nogal veel deze dagen, en er is een enorme pleitbezorging om Pure functies te schrijven. Wat zijn Pure functies? Niet zo lang geleden leerde ik het concept van zuivere functies, en tot mijn verbazing schreef ik al veel zuivere functies, zonder te beseffen dat er een term voor was.

zuivere functies

Wat kwalificeert als een zuivere functie?

een functie wordt als zuiver beschouwd als deze voldoet aan de volgende regels:

  1. de functie geeft altijd dezelfde uitvoer terug als dezelfde argumenten worden doorgegeven.
  2. de functie veroorzaakt geen bijwerkingen.

we hebben in het verleden al bewust of onbewust zuivere functies geschreven.
kijk eens naar een zuivere functie hieronder, die een som van twee getallen geeft met twee invoerargumenten.

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

de uitvoer van deze functie zal altijd hetzelfde blijven, als dezelfde invoerargumenten worden doorgegeven. Simpel genoeg. Pure functies zijn eenvoudige bouwstenen die altijd een voorspelbaar gedrag hebben. Vandaar dat ze altijd dezelfde voorspelbare output leveren, zonder enige externe invloed.

hier is een eenvoudig voorbeeld van hoe een onzuivere functie eruit ziet.

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

hier wordt de functie als onzuiver beschouwd, omdat ze niet het argument gebruikt dat eraan werd doorgegeven. In plaats daarvan gebruikt het een externe waarde die onderhevig is aan verandering. Daarom maakt de functie onzuiver door externe interferentie / bijwerkingen.

goed, laten we het hebben over de twee vereisten voor bijwerkingen.

Wat zijn bijwerkingen?

bijwerkingen treden op wanneer uw functie interageert met de buitenwereld.

enkele voorbeelden van vaak voorkomende bijwerkingen zijn::

  • het maken van een API-aanroep
  • gegevens
  • consolelogs naar het scherm
  • manipuleren van de DOM
  • Datum.now() om de huidige datum/tijd
  • async te krijgen, wacht u op calls / waiting for promises om
  • math op te lossen.random () om willekeurige getallen

te genereren, vraag je je misschien af hoe we de hele tijd functies zonder bijwerkingen kunnen schrijven. Het is heel moeilijk om bijwerkingen helemaal te voorkomen. Het enige wat ik zeg is, om een functie te kwalificeren als puur, zoals de naam al doet vermoeden, moet het geen bijwerkingen hebben.

wat win ik door zuivere functies te schrijven?

zuivere functies

Pic hoffelijkheid: Picpedia.Org

goed, we hebben de definities uit de weg. U kunt nu vragen wat zijn de voordelen.

testen is eenvoudig

stel je voor, je hebt een hoop pure functies, die maar één ding doen. Ze hebben geen externe bijwerkingen en ze geven altijd voorspelbare output terug. Deze functies zullen zo veel gemakkelijker te testen zijn, dan een functie die een hoop afhankelijkheden en onvoorspelbaar gedrag heeft. Het schrijven van schone, testbare code zal helpen bij het verbeteren van uw code kwaliteit drastisch.

debug-code is geen pijn

met pure functies zal debug-code geen grote pijn zijn, vergeleken met het debuggen van onzuivere functies. Als u een probleem of bug tegenkomt, en u hebt het teruggebracht tot een pure functie, dan kunt u er zeker van zijn dat u niet buiten het bereik van die functie hoeft te kijken om het probleem te vinden. Daarom, drastisch verbeteren van de ontwikkelaar debugging ervaring.

Memoization om de prestaties

met zuivere functies te verbeteren, is het gegarandeerd om dezelfde output voor een bepaalde ingang te retourneren. Dit creëert de mogelijkheid van memoization. Wanneer dezelfde input wordt doorgegeven aan een functie, kan het de resultaten uit een cache trekken, waardoor de app sneller presteert. Caching kan tonnen resources besparen en de prestaties verbeteren. En caching pure functies kunnen zonder zorgen worden gedaan, omdat ze voorspelbaar zijn zonder bijwerkingen.

onderhoudbare code, gemakkelijk te refactor

dit is een voor de hand liggende code. Met code, dat is zo schoon, gemakkelijk te testen en debuggen, je eindigt met zeer onderhoudbare code ook. Dit is een belangrijk aspect dat de toekomst in het achterhoofd houdt. Jaren / maanden later als uw software heeft om extra functies, en refactoring, de code die bestaat uit bos van pure functies zal zeer intuïtief te re-factor. Ze zullen geen externe bijwerkingen hebben waar de ontwikkelaar zich zorgen over zou moeten maken. Zelfs nieuwe ontwikkelaars in het team kunnen deze taak met gemak op zich nemen.

een voorbeeld uit de echte wereld dat zuivere functies

Redux gebruikt is zo populair en de meesten van ons hebben het in sommige projecten gebruikt of hebben er van gehoord. Reductoren zijn functies die deel uitmaken van het Redux patroon en een cruciale rol spelen. Het belangrijkste kenmerk van redux verloopstukken is dat ze Pure functies zijn.

reductoren zijn zuivere functies die een toestand en actie aannemen en een nieuwe toestand teruggeven.

function(state, action) => newState

reductoren zijn het belangrijkste deel van De Redux-integratie en houden een groot deel van de zakelijke logica in. En omdat redux afdwingt dat de reducers pure functies moeten zijn zonder bijwerkingen, eindigen we met zeer elegante en eenvoudige functies die gemakkelijk te onderhouden zijn

Redux is een klassiek voorbeeld van het schrijven van pure functies. Het ontleent zijn inspiratie aan functionele programmering en is de laatste jaren enorm populair geworden. Het wordt veel gebruikt in moderne webapplicaties voor state management. Nu weet je de reden achter het succes, t is het de eis om zuivere functies te schrijven. Dit maakt de code testbaar, schoon, gemakkelijker te debuggen en onderhoudbaar.

conclusie

we hebben onderzocht hoe het schrijven van Pure functies u ten goede kan komen en uw code eenvoudig en elegant kan houden. Houd er rekening mee dat Pure functies niet beperkt zijn tot JavaScript. Dit concept kan worden overgenomen in elke programmeertaal van uw keuze. Het werkt goed met JavaScript en elke functionele programmeertaal.

Als u uw JavaScript-vaardigheden wilt verbeteren, raad ik Mosh ‘ s Cursus JavaScript ten zeerste aan.

Bekijk hier alle JavaScript-cursussen: https://codewithmosh.com/p/full-stack-javascript-developer-bundle

Als u genoten van deze post, gelieve te verspreiden het woord en delen. Kijk nog eens voor meer berichten.

Adhithi Ravichandran is een Software Consultant gevestigd in Kansas City. Momenteel werkt ze aan het bouwen van apps met React, React Native en GraphQL. Ze is Conferentiespreker, auteur van Pluralsight, Blogger en Software-Consultant. Ze is gepassioneerd over het onderwijs en gedijt om bij te dragen aan de tech-gemeenschap met haar Cursussen, blog posts en spreken engagementen.

Tags: javascript, Pure functies

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.