Czasami natrafiam na kod podobny do poniższego przykładu (to, co dokładnie robi ta funkcja, jest poza zakresem tego pytania):
function doSomething(value) {
if (check1(value)) {
return -1;
}
else if (check2(value)) {
return value;
}
else {
return false;
}
}
Jak widać, if
, else if
i else
oświadczenia są używane w połączeniu z return
oświadczeniem. Dla zwykłego obserwatora wydaje się to dość intuicyjne, ale myślę, że bardziej eleganckie (z perspektywy programisty) byłoby upuszczenie else
-s i uproszczenie kodu w następujący sposób:
function doSomething(value) {
if (check1(value)) {
return -1;
}
if (check2(value)) {
return value;
}
return false;
}
Ma to sens, ponieważ wszystko, co następuje po return
instrukcji (w tym samym zakresie), nigdy nie zostanie wykonane, dzięki czemu powyższy kod będzie semantycznie równy pierwszemu przykładowi.
Który z powyższych elementów bardziej odpowiada dobrym praktykom kodowania? Czy są jakieś wady obu metod w zakresie czytelności kodu?
Edycja: W tym pytaniu podano jako odniesienie duplikat . Uważam, że moje pytanie dotyczy innego tematu, ponieważ nie pytam o unikanie duplikatów stwierdzeń przedstawionych w drugim pytaniu. Oba pytania mają na celu ograniczenie liczby powtórzeń, choć w nieco inny sposób.
-1
jest liczbą, false
jest wartością logiczną i value
nie jest tu podana, więc może to być dowolny typ obiektu.
value
to rzeczywiście liczba całkowita. Jeśli może to być cokolwiek, to jest jeszcze gorzej.
else
Jest mniejszym problemem, większym problemem jest oczywiście jesteś powrocie dwa typy danych z jednej funkcji, która sprawia, że API funkcji nieprzewidywalne.