Klauzule ochronne lub warunki wstępne (jak zapewne widać) sprawdzają, czy określony warunek jest spełniony, a następnie przerywa działanie programu. Doskonale nadają się do miejsc, w których naprawdę interesuje Cię tylko jeden wynik if
wypowiedzi. Zamiast więc mówić:
if (something) {
// a lot of indented code
}
Odwracasz warunek i łamiesz się, jeśli ten odwrócony warunek jest spełniony
if (!something) return false; // or another value to show your other code the function did not execute
// all the code from before, save a lot of tabs
return
nie jest tak brudny jak goto
. Pozwala przekazać wartość pokazującą resztę kodu, której funkcja nie mogła uruchomić.
Zobaczysz najlepsze przykłady zastosowania tego w warunkach zagnieżdżonych:
if (something) {
do-something();
if (something-else) {
do-another-thing();
} else {
do-something-else();
}
}
vs:
if (!something) return;
do-something();
if (!something-else) return do-something-else();
do-another-thing();
Kilka osób twierdzi, że pierwsza jest czystsza, ale oczywiście całkowicie subiektywna. Niektórzy programiści lubią wiedzieć, w jakich warunkach coś działa przez wcięcia, podczas gdy wolałbym raczej liniowy przepływ metod.
Ani razu nie zasugeruję, że preony zmienią twoje życie lub spowodują, że cię położysz, ale twój kod może być nieco łatwiejszy do odczytania.