Skip to content

Functions with a purpose

Funktionen haben optimalerweise einen einzigen Zweck. So können wir auf einen Blick erkennen, was sie macht.
Beispielsweise:

  • filter filtert einen Array
  • map gibt einen neuen Array mit mapped values zurück

Verben bezeichnen eine Aktion. Wenn die Funktion mit einer Aktion beginnt, wissen wir sofort, was darin passiert.
Beispiele:

  • getAppleCount gibt die Anzahl der Äpfel zurück
  • createUser erstellt einen User (für eine App z.B.)
  • nextSlide selektiert den nächsten Slide

Wenn wir Funktionen schreiben, können wir sie kommentieren, damit wir auch nach drei Monaten noch wissen, was sie macht. Dafür gibt es ein eigenes Format (JSDoc).
Die Dokumentation einer Funktion enthält mindestens drei Dinge:

  1. was die Funktion macht
  2. welche Parameter sie entgegennimmt
  3. der zurückgegebene Wert (return)

Was die Funktion macht wird in einem kurzen Satz beschrieben. Beim Parameter interessiert uns der Typ, der Name und eine kurze Beschreibung.
Der Return Wert sagt uns mehr über den Wert, den die Funktion zurückgibt. Dabei interessiert uns der Typ und eine kurze Beschreibung des Typs.

/**
* <Description of the function>
* @param {type} param1 <Description of param1>
* @param {type} param2 <Description of param2>
* @returns {type} <Description of the returned value>
*/

Beispiel für eine kommentierte Funktion:

/**
* Gets the first fruit from an array of fruits
* @param {Array} fruitBasket Array of fruits
* @returns {String} Name of the first fruit in the basket
*/
function getFirstFruit(fruitBasket) {
return fruitBasket[0];
}

Pure functions haben zwei Merkmale:

  1. sie produzieren keine Nebeneffekte
  2. sie geben immer denselben Output bei einem gegebenen Input zurück

Wenn eine Funktion den externen Status verändert, ist das ein Nebeneffekt. Pure functions sollten das nicht machen.

Returning the same output given a specific input

Section titled “Returning the same output given a specific input”

Wenn wir einer Funktion einen bestimmten Wert übergeben, sollte immer derselbe Output zurückgegeben werden. Wenn wir z.B. eine Funktion haben, die zwei Zahlen zusammenzählt, kommt immer dieselbe Zahl heraus.
Eine impure (“unsaubere”) Funktion gibt jedes Mal einen anderen Wert zurück. Ein gutes Beispiel ist eine Funktion, die mit Math.random() arbeitet und Zufallszahlen zurückgibt.

Pure functions dürfen nicht von externen Variablen abhängen. Ändert sich eine externe Variable, Würde sich diese ändern, würde sich der zurückgegebene Wert der Funktion ändern.

Funktionen, die von externen Variablen abhängen, sind dann möglich, wenn sichergestellt ist, dass sich diese nicht ändern.