Mam takie krótkie pytanie: dlaczego funkcja equals tak zapisana "tekst".equals(typ) jest lepsza od tak zapisanej typ.equals("tekst") ?
Funkcja equals
- Rejestracja: dni
- Ostatnio: dni
- Postów: 4
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Space: the final frontier
- Postów: 26433
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
- Rejestracja: dni
- Ostatnio: dni
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.
- Rejestracja: dni
- Ostatnio: dni
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.
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Stacktrace
- Postów: 6822
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.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 79
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 */ }