1. Juli, 2019

JavaScript-Entwickler umfassen funktionale Programmierung ziemlich viel in diesen Tagen, und es gibt eine große Befürwortung reine Funktionen zu schreiben. Was sind reine Funktionen? Vor nicht allzu langer Zeit lernte ich das Konzept der reinen Funktionen kennen, und zu meiner Überraschung schrieb ich bereits viele reine Funktionen, ohne zu merken, dass es einen Begriff dafür gab.

Reine Funktionen

Was gilt als reine Funktion?

Eine Funktion gilt als rein, wenn sie die folgenden Regeln einhält:

  1. Die Funktion gibt immer dieselbe Ausgabe zurück, wenn dieselben Argumente übergeben werden.
  2. Die Funktion erzeugt keine Nebenwirkungen.

Wir alle haben in der Vergangenheit wissentlich oder unwissentlich reine Funktionen geschrieben.
Schauen Sie sich unten eine reine Funktion an, die eine Summe aus zwei Zahlen mit zwei Eingabeargumenten zurückgibt.

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

Die Ausgabe dieser Funktion bleibt immer dieselbe, wenn dieselben Eingabeargumente übergeben werden. Einfach genug. Reine Funktionen sind einfache Bausteine, die immer ein vorhersehbares Verhalten haben. Daher geben sie immer die gleiche vorhersehbare Ausgabe zurück, ohne externen Einfluss.

Hier ist ein einfaches Beispiel, wie eine unreine Funktion aussieht.

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

Hier wird die Funktion als unrein angesehen, da sie nicht das Argument verwendet, das an sie übergeben wurde. Stattdessen wird ein externer Wert verwendet, der Änderungen unterliegt. Daher, so dass die funktion unrein aufgrund externe störungen/nebenwirkungen.

Okay, lassen Sie uns über die Anforderung zwei über Nebenwirkungen sprechen.

Was sind Nebenwirkungen?

Nebenwirkungen treten immer dann auf, wenn Ihre Funktion mit der Außenwelt interagiert.

Einige Beispiele für häufige Nebenwirkungen sind:

  • API-Aufruf
  • Daten mutieren
  • Konsolenprotokolle auf dem Bildschirm
  • Bearbeiten des DOM
  • Datum.now() zum Abrufen des aktuellen Datums / der aktuellen Uhrzeit
  • async await calls/waiting for promises to resolve
  • math.random() um Zufallszahlen zu generieren

Nun, Sie fragen sich vielleicht, wie wir die ganze Zeit Funktionen ohne Nebenwirkungen schreiben können. Es ist ziemlich schwierig, Nebenwirkungen insgesamt zu vermeiden. Alles, was ich sage, ist, dass eine Funktion, um sich als rein zu qualifizieren, wie der Name schon sagt, keine Nebenwirkungen haben sollte.

Was gewinne ich, wenn ich reine Funktionen schreibe?

 Reine Funktionen

Bild mit freundlicher genehmigung: Picpedia.Org

Okay, wir haben die Definitionen aus dem Weg geräumt. Sie können jetzt fragen, welche Vorteile es hat.

Testen ist einfach

Stellen Sie sich vor, Sie haben eine Reihe reiner Funktionen, die nur eines tun. Sie haben keine externen Nebenwirkungen und geben immer eine vorhersehbare Ausgabe zurück. Diese Funktionen sind so viel einfacher zu testen als eine Funktion mit einer Reihe von Abhängigkeiten und unvorhersehbarem Verhalten. Wenn Sie sauberen, testbaren Code schreiben, können Sie Ihre Codequalität drastisch verbessern.

Debugging-Code ist kein Schmerz

Bei reinen Funktionen ist das Debuggen von Code im Vergleich zum Debuggen unreiner Funktionen kein großer Schmerz. Wenn Sie auf ein Problem oder einen Fehler stoßen und es auf eine reine Funktion eingegrenzt haben, können Sie sicher sein, dass Sie nicht außerhalb des Bereichs dieser Funktion suchen müssen, um das Problem zu finden. Daher wird die Debugging-Erfahrung des Entwicklers drastisch verbessert.

Memoisierung zur Verbesserung der Leistung

Bei reinen Funktionen wird garantiert die gleiche Ausgabe für eine bestimmte Eingabe zurückgegeben. Dies schafft die Möglichkeit der Memoisierung. Wenn dieselbe Eingabe an eine Funktion weitergegeben wird, können die Ergebnisse aus einem Cache abgerufen werden, wodurch die App schneller ausgeführt wird. Caching kann Tonnen von Ressourcen sparen und die Leistung verbessern. Das Zwischenspeichern reiner Funktionen kann problemlos erfolgen, da sie ohne Nebenwirkungen vorhersehbar sind.

Wartbarer Code, einfach zu refaktorieren

Dies ist offensichtlich. Mit Code, der so sauber, einfach zu testen und zu debuggen ist, erhalten Sie auch sehr wartbaren Code. Dies ist ein wichtiger Aspekt, der die Zukunft im Auge behält. Jahre / Monate später, wenn Ihre Software zusätzliche Funktionen und Refactoring haben muss, wird der Code, der aus einer Reihe von reinen Funktionen besteht, extrem intuitiv zu Re-Faktor sein. Sie haben keine externen Nebenwirkungen, über die sich der Entwickler Sorgen machen müsste. Auch neue Entwickler im Team können diese Aufgabe problemlos übernehmen.

Ein reales Beispiel, das reine Funktionen verwendet

Redux ist so beliebt und die meisten von uns haben es entweder in einigen Projekten verwendet oder davon gehört. Reduzierer sind Funktionen, die Teil des Redux-Musters sind und eine entscheidende Rolle spielen. Das wichtigste Merkmal von Redux-Reduzierern ist, dass sie reine Funktionen sind.

Reduzierungen sind reine Funktionen, die einen Zustand und eine Aktion annehmen und einen neuen Zustand zurückgeben.

function(state, action) => newState

Reduzierer sind der Hauptteil der Redux-Integration und enthalten einen Großteil der Geschäftslogik. Und da Redux erzwingt, dass die Reduzierer reine Funktionen ohne Nebenwirkungen sein müssen, erhalten wir sehr elegante und einfache Funktionen, die leicht zu warten sind

Redux ist ein klassisches Beispiel für das Schreiben reiner Funktionen. Es leitet sich von der funktionalen Programmierung ab und hat in den letzten Jahren immense Popularität erlangt. Es wird häufig in modernen Webanwendungen für die Zustandsverwaltung verwendet. Jetzt kennen Sie den Grund für seinen Erfolg, nämlich die Anforderung, reine Funktionen zu schreiben. Dies macht den Code testbar, sauber, einfacher zu debuggen und wartbar.

Fazit

Wir haben untersucht, wie das Schreiben reiner Funktionen Ihnen zugute kommen und Ihren Code einfach und elegant halten kann. Beachten Sie, dass reine Funktionen nicht auf JavaScript beschränkt sind. Dieses Konzept kann in jede Programmiersprache Ihrer Wahl übernommen werden. Es funktioniert gut mit JavaScript und jeder funktionalen Programmiersprache.

Wenn Sie Ihre JavaScript-Fähigkeiten verbessern möchten, empfehle ich Moshs Kurs über JavaScript.

Schauen Sie sich alle JavaScript-Kurse hier an: https://codewithmosh.com/p/full-stack-javascript-developer-bundle

Wenn Ihnen dieser Beitrag gefallen hat, Bitte verbreiten Sie das Wort und teilen Sie es. Schauen Sie noch einmal nach, um weitere Beiträge zu erhalten.

Adhithi Ravichandran ist ein Softwareberater mit Sitz in Kansas City. Derzeit arbeitet sie an der Entwicklung von Apps mit React, React Native und GraphQL. Sie ist Konferenzrednerin, Pluralsight-Autorin, Bloggerin und Softwareberaterin. Sie unterrichtet leidenschaftlich gern und leistet mit ihren Kursen, Blogposts und Vorträgen einen Beitrag zur Tech-Community.

Schlagwörter: Javascript, Reine Funktionen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.