192
Rozdział 4.
Refaktoryzacja kodu poprzez zastosowanie funkcji
Piszemy funkcję printAndGetHighScore
Dysponujemy już kodem, który umieścimy w funkcji
printAndGetHighScore
. To ten sam
kod, który już napisaliśmy, aby jednak przekształcić go w funkcję, musimy się zastanowić,
jakie argumenty będziemy do niego przekazywać i jaką wartość wynikową chcemy uzyskać.
Przekazanie tablicy wyników jako argumentu wydaje się dobrym pomysłem, gdyż dzięki
temu będziemy mogli używać tej samej funkcji do przetwarzania innych tablic z wynikami
testów. Jeśli chodzi o wynik, to chcemy by funkcja zwróciła najlepszy wynik odszukany
w wynikach, tak by kod wywołujący funkcję mógł zrobić z nim coś interesującego
(a poza tym, potrzebujemy tego wyniku do odszukania najlepszych płynów).
A… i jeszcze jedna sprawa: zazwyczaj chcemy, by funkcja robiła tylko
jedną rzecz, ale dobrze.
W tym przypadku nasza funkcja będzie robić dwie rzeczy: wyświetlać wszystkie wyniki
w tablicy oraz wyznaczać największy zapisany w niej wynik. Można by się zastanowić nad
rozbiciem tych czynności na dwie funkcje, jednak zważywszy na to, jak proste są realizowane
przez nie operacje, oprzemy się tej pokusie. Gdybyśmy jednak pracowali nad profesjonalnym
rozwiązaniem, moglibyśmy ponownie przemyśleć zagadnienie i rozbić tę funkcję na dwie:
printScores
oraz
getHighScore
, które, odpowiednio, wyświetlałyby wyniki i pobierały
największy wynik. Na razie jednak pozostaniemy przy jednej funkcji. A teraz zabierzmy się
za refaktoryzację kodu.
function printAndGetHighScore(scores) {
var highScore = 0;
var output;
for (var i = 0; i < scores.length; i++) {
output = ”Pïyn do baniek nr ” + i + ” wynik: ” + scores[i];
console.log(output);
if (scores[i] > highScore) {
highScore = scores[i];
}
}
return highScore;
}
Napisaliśmy funkcję, która
oczekuje przekazania jednego
argumentu — tablicy wyników.
Ten kod jest dokładnie taki sam.
A w zasadzie tylko WYGLĄDA na
dokładnie taki sam, gdyż użyto
w nim parametru scores, a nie
zmiennej globalnej o tej nazwie.
Dodaliśmy tutaj jeden wiersz,
który zwraca wartość zmiennej
highScore, przekazując ją do
kodu, który wywołał funkcję.
Get Programowanie w JavaScript Rusz głową! 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.