Mam metodę, która wywołuje 4 kolejne metody w celu sprawdzenia określonych warunków i zwraca natychmiast (nie sprawdzając kolejnych), ilekroć ktoś zwróci coś Prawdy.
def check_all_conditions():
x = check_size()
if x:
return x
x = check_color()
if x:
return x
x = check_tone()
if x:
return x
x = check_flavor()
if x:
return x
return None
To wygląda na dużo kodu bagażu. Zamiast każdej 2-liniowej instrukcji if wolę zrobić coś takiego:
x and return x
Ale to jest nieprawidłowy Python. Czy brakuje mi tutaj prostego, eleganckiego rozwiązania? Nawiasem mówiąc, w tej sytuacji te cztery metody sprawdzania mogą być drogie, więc nie chcę dzwonić do nich wiele razy.
x and return x
jest lepszy niż if x: return x
? Ten ostatni jest znacznie bardziej czytelny, a tym samym łatwy do utrzymania. Nie powinieneś zbytnio przejmować się liczbą znaków lub linii; liczy się czytelność. W każdym razie są to dokładnie te same znaki, które nie są spacjami, i jeśli naprawdę musisz, if x: return x
będą działały dobrze tylko w jednym wierszu.
x
(w przeciwieństwie do bool(x)
), więc w obecnej postaci uważam, że można bezpiecznie założyć, że funkcje OP mogą zwrócić wszystko, a on chce najpierw wszystkiego, co jest zgodne z prawdą.