Czasami rozbijam długie warunki w if
na kilka linii. Najbardziej oczywistym sposobem na to jest:
if (cond1 == 'val1' and cond2 == 'val2' and
cond3 == 'val3' and cond4 == 'val4'):
do_something
Nie jest zbyt atrakcyjny wizualnie, ponieważ akcja zlewa się z warunkami. Jest to jednak naturalny sposób, wykorzystujący poprawne wcięcie Pythona wynoszące 4 spacje.
Na razie używam:
if ( cond1 == 'val1' and cond2 == 'val2' and
cond3 == 'val3' and cond4 == 'val4'):
do_something
Ale to nie jest zbyt ładne :-)
Czy możesz polecić jakiś alternatywny sposób?
Nie musisz używać 4 spacji w drugiej linii warunkowej. Może użyj:
if (cond1 == 'val1' and cond2 == 'val2' and
cond3 == 'val3' and cond4 == 'val4'):
do_something
Nie zapominaj również, że spacja jest bardziej elastyczna niż mogłoby się wydawać:
if (
cond1 == 'val1' and cond2 == 'val2' and
cond3 == 'val3' and cond4 == 'val4'
):
do_something
if (cond1 == 'val1' and cond2 == 'val2' and
cond3 == 'val3' and cond4 == 'val4'):
do_something
Oba te są dość brzydkie, chociaż.
Może usunąć nawiasy (Style Guide odradza to jednak)?
if cond1 == 'val1' and cond2 == 'val2' and \
cond3 == 'val3' and cond4 == 'val4':
do_something
To przynajmniej daje ci jakieś rozróżnienie.
Albo nawet:
if cond1 == 'val1' and cond2 == 'val2' and \
cond3 == 'val3' and \
cond4 == 'val4':
do_something
Chyba wolę:
if cond1 == 'val1' and \
cond2 == 'val2' and \
cond3 == 'val3' and \
cond4 == 'val4':
do_something
Oto Style Guide, który (od 2010) zaleca używanie nawiasów.
To nie poprawia tak wiele, ale...
allCondsAreOK = (cond1 == 'val1' and cond2 == 'val2' and
cond3 == 'val3' and cond4 == 'val4')
if allCondsAreOK:
do_something
Sugeruję przeniesienie słowa kluczowego and
do drugiej linii i wcięcie wszystkich linii zawierających warunki dwoma spacjami zamiast czterech:
if (cond1 == 'val1' and cond2 == 'val2'
and cond3 == 'val3' and cond4 == 'val4'):
do_something
To jest dokładnie to, jak rozwiązuję ten problem w moim kodzie. Posiadanie słowa kluczowego jako pierwszego słowa w linii sprawia, że warunek jest dużo bardziej czytelny, a zmniejszenie liczby spacji dodatkowo odróżnia warunek od akcji.