Funkcja equals

0

Mam takie krótkie pytanie: dlaczego funkcja equals tak zapisana "tekst".equals(typ) jest lepsza od tak zapisanej typ.equals("tekst") ?

0

Bo pierwsza nie wymaga null-checka?
Zauważ że druga wymaga żebyś najpierw sprawdził czy typ!=null bo inaczej możesz załapać się na NullPointerException

0

A poważnie, uważam wywołanie

zm.equals("bleble");

za lepsze. Jeżeli dochodzi do powyższego porównania i zm == null, to zapewne skopana jest wcześniejsza część programu i dobrze jest się o tym dowiedzieć jak nawcześniej.

0

hehe kiedyś to określali jako "Yoda convention".
"Blue".equals("Sky");

To tak jakby powiedzieć Blue is the sky zamiast po prostu Sky is blue. Tylko z sentymentu do Gwiezdnych Wojen czasami tego używam, ale przychylam się do w/w opinii że lepiej porównywać normalnie bo wystąpienie nulla faktycznie z ogromnej większosći przypadków świadczy o grubym błędzie gdzieś wczesniej.

0

No niekoniecznie głupoty. Szczególnie gdy null jest dopuszczalną wartością (np. parametry nieobowiązkowe lub dziwne mapowania z formularza). Choć yoda convention jest głupie to jednak wolę to niż dodatkowy null check.

0

A czy to po części też nie wywodzi się z języków, które zezwalają w if'ie na warunki inne, niż bool?

Wtedy yoda convention pozwala wykryć takie błędy, gdzie się wpisało "=", zamiast "=="

To przejdzie:
if (i = 10) { /* do something */ }

a to już nie:
if (10 = i) { /* do something */ }

0

Pośrednio tak, ponieważ dzięki temu unikano błędów. Z drugiej strony yc było propagowane jako jedna z dobrych praktyk ponieważ pozwalało eliminować nadmierne nullcheck.

1 użytkowników online, w tym zalogowanych: 0, gości: 1