Functions with a purpose
Funktionen haben optimalerweise einen einzigen Zweck. So können wir auf einen Blick erkennen, was sie macht.
Beispielsweise:
filterfiltert einen Arraymapgibt einen neuen Array mit mapped values zurück
Function names should begin with verbs
Section titled “Function names should begin with verbs”Verben bezeichnen eine Aktion. Wenn die Funktion mit einer Aktion beginnt, wissen wir sofort, was darin passiert.
Beispiele:
getAppleCountgibt die Anzahl der Äpfel zurückcreateUsererstellt einen User (für eine App z.B.)nextSlideselektiert den nächsten Slide
Commenting your functions
Section titled “Commenting your functions”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:
- was die Funktion macht
- welche Parameter sie entgegennimmt
- 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];}Write pure functions
Section titled “Write pure functions”Pure functions haben zwei Merkmale:
- sie produzieren keine Nebeneffekte
- sie geben immer denselben Output bei einem gegebenen Input zurück
No side effects
Section titled “No side effects”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.
No external variables
Section titled “No external variables”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.
Semi-pure functions
Section titled “Semi-pure functions”Funktionen, die von externen Variablen abhängen, sind dann möglich, wenn sichergestellt ist, dass sich diese nicht ändern.