jesteś tutaj
475
Funkcje pierwszej klasy
Pisanie kodu do wydawania napojów
W pierwszym podejściu do napisania tego kodu mógłbyś uzyskać coś takiego.
function serveCustomer(passenger) {
if (passenger.ticket === ”pierwsza klasa”) {
alert(”PodaÊ koktajl czy wino?”);
} else {
alert(”PodaÊ colÚ czy wodÚ?”);
}
// Zbieramy zamówienie na posiïek.
// Zbieramy Ămieci.
}
Jeśli pasażer ma bilet
pierwszej klasy, wyświetlamy
okno dialogowe, oferując mu
możliwość wyboru koktajlu bądź
wina.
Jeśli natomiast pasażer
ma bilet klasy turystycznej,
można mu zaoferować jedynie
colę lub wodę.
Przykładowo na
trasie na Hawaje
w pierwszej klasie
serwowane są
zazwyczaj drinki Mai
tai (a przynajmniej
tak słyszeliśmy).
Nieźle. W prostym kodzie takie rozwiązanie będzie działać całkiem dobrze:
sprawdzamy bilet pasażera i w zależności od jego typu wyświetlamy odpowiedni
komunikat. Zastanówmy się jednak nad potencjalnymi wadami tego rozwiązania.
Nasz kod do zbierania zamówień i wydawania napojów jest bardzo prosty, ale co
by się stało z funkcją
serveCunstomer
, gdyby problem stał się bardziej złożony?
Może się np. okazać, że musimy obsługiwać trzy klasy pasażerów (pierwszą klasę,
klasę biznesową i turystyczną, a gdyby do tego doszła turystyczna klasa premium,
to byłoby ich aż cztery!). A co zrobimy, jeśli zasady doboru oferowanych napojów
staną się bardziej złożone? Albo gdy oferowane napoje będą zależeć od miejsca,
z którego samolot wylatuje, bądź do którego leci?
Jeśli będziemy musieli poradzić sobie z tymi wszystkimi możliwościami, funkcja
serveCustomer
bardzo szybko stanie się rozbudowana i złożona, i zacznie raczej
służyć do zarządzania napojami niż do obsługi pasażerów, a poza tym, kiedy
projektujemy funkcje, powszechnie przyjęta zasada nakazuje, by wykonywały one
tylko jedną rzecz, lecz robiły to naprawdę dobrze.
WYSIL
SZARE KOMÓRKI
Jeszcze raz przeczytaj uważnie wszystkie potencjalne problemy wymienione w dwóch ostatnich akapitach na tej stronie.
A następnie zastanów się, jak należałoby zaprojektować funkcję serveCustomer, by koncentrowała się tylko na swoim
podstawowym zadaniu, a jednocześnie pozwalała na przyszłe rozszerzanie strategii serwowania napojów.
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.