Temat: Porównanie Stringów

Tak zupełnie na marginesie, w Groovym stringi porównuje się przez ==, co dodatkowo daje naturalne przejście do porównywania z RegExp poprzez operatory =~ i ==~.

konto usunięte

Temat: Porównanie Stringów

Marcin M.:
Po prostu programujesz logikę z pominięciem walidacji i technikaliów języka (z NPE włącznie) zakładając, że dane są zawsze poprawne. Dzięki temu kod w środku jest czystą reprezentacją idei biznesowych nie zlepkiem wielu aspektów w jednym miejscu.

To być może zależy od środowiska, ale nigdy nie usuwałem walidacji tylko ze względu na "nieczystość kodu".
Jedynym dla mnie wskazaniem do pomijania nadmiarowych walidacji jest sytuacja, gdy kod ma być bardzo szybki.
Wtedy określam warunki wejścia w dokumentacji i tak jak napisałeś zakładam że dane są poprawne.

Biorąc pod uwagę to co już tu napisano powyżej, w tym konkretnym przypadku zrobiłbym tak:

Zamiast:
if (json_hash.get("success") == "1") {}


Jeśli to JSONObject i parametr "success" jest wymagany napisałbym ("Fail Early"):
if (json_hash.getString("success").equals("1")) {}


Napisałbym jeśli to JSONObject i parametr "success" jest opcjonalny:
if (json_hash.optString("success").equals("1")) {}


Jeśli składowa "success" jest wymagana i ma być zawsze typu int to wystarczy:
if (json_hash.getInt("success") == 1) {}


Jeśli to nie JSONObject to zrobiłbym warstwę która dostarcza parametr "success" jako int lub lepiej jako boolean.



Wyślij zaproszenie do