Funkcja equals

T1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4
0

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

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
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

bogdans
  • Rejestracja: dni
  • Ostatnio: dni
0

A poważnie, uważam wywołanie

Kopiuj
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.

lipkerson
  • Rejestracja: dni
  • Ostatnio: dni
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.

Koziołek
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Stacktrace
  • Postów: 6822
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.

VG
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 79
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 */ }

Koziołek
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Stacktrace
  • Postów: 6822
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.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.