158 Kapitel 4
Den Code mit Funktionen refaktorieren
Die printAndGetHighScore-Funktion schreiben
Den Code für die Funktion printAndGetHighScore haben wir bereits geschrieben. Um
daraus eine Funktion zu machen, müssen wir nur wissen, welche Argumente übergeben
werden sollen und ob irgendwelche Rückgabewerte gebraucht werden.
Es scheint sinnvoll, das Array scores zu übergeben, denn so können wir die Funktion auch
für andere Arrays mit Messergebnissen verwenden. Außerdem wollen wir den berechneten
Höchststand zurückgeben, damit der aufrufende Code weitere interessante Dinge damit
anstellen kann (schließlich brauchen wir das Ergebnis, um die besten Mischungen zu ermit-
teln).
Oh, und noch etwas: Oftmals wollen Sie, dass Ihre Funktion genau eine Sache wirklich
gut macht. Hier sind es zwei: Wir geben die Ergebnisse im Array aus, und gleichzeitig
berechnen wir den Höchststand. Vielleicht sollten wir das auf zwei Funktionen aufteilen.
So einfach, wie die Dinge sind, werden wir dieser Versuchung aber fürs Erste noch
widerstehen. In einer professionellen Umgebung würden wir sicher darüber nachdenken,
zwei Funktionen (z. B. printScores und getHighScore) daraus zu machen. Hier
bleiben wir bei einer Funktion. Nun wollen wir mal mit dem Refaktorieren beginnen:
function printAndGetHighScore(scores) {
var highScore = 0;
var output;
for (var i = 0; i < scores.length; i++) {
output = "Mischung Nummer " + i + " Ergebnis: " + scores[i];
console.log(output);
if (scores[i] > highScore) {
highScore = scores[i];
}
}
return highScore;
}
Unsere neue Funktion erwartet ein
Argument: das scores-Array.
Dieser Code macht das Gleiche wie
vorher. Tatsächlich SIEHT er genau
gleich AUS. Aber jetzt verwendet
er den Parameter scores und nicht
mehr die globale Variable gleichen
Namens.
Außerdem haben wir eine Codezeile
hinzugefügt, die den Höchststand (in
der lokalen Variablen highScore) an
den aufrufenden Code zurückgibt.
Get JavaScript-Programmierung von Kopf bis Fuß now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.