Wpis z mikrobloga

Czy poprawną praktyką (w programowaniu ogólnie) jest umieszczanie po prawej stronie operatora and / && wyrażenia które może wyrzucić jakiś error w przypadku gdyby wyrażenie po lewej stronie było fałszem? Tzn. czy zawsze bezpieczne jest założenie że w przypadku fałszu po lewej stronie, prawa nie zostanie wykonana?

Na pythonowym przykładzie: Jest instancja klasy A z polem a.data które przewiduję że może być puste, albo może być instancją innej klasy do której chcę się odwołać.
Czy w takim razie warunek

if a.data is not None and a.data.number == 23 :
jest ok?

#python #programowanie
  • 8
@blackyabbol: Przetestuj - wprowadź taką wartość, która mogłaby ci to zepsuć i sprawdź jak się program zachowa. Jeżeli się wysypie to musisz to poprawić. Wiem że w Javie jest takie sprawdzanie że jak jeden warunke spowoduje że wynik warunku będzie z góry pewny (np. przy kilku && jak gdzieś się pojawi false to nie sprawdza dalej bo mamy pewność że otrzymamy false) to sprawdzania nie będzie ale nie wiem jak to
@blackyabbol: Jeśli działa wtedy, kiedy nie wiemy czy wywołuje błąd, to oznacza że błędu nie wywołuje.

Z tego co wiem, większość języków instrukcje z warunków przetwarza od lewej do prawej, więc błąd może wystąpić tylko wtedy, kiedy w jakimś języku jest na odwrót.