hubert
41 уровень

Говнокод #20

Пост из группы Архив info.javarush.ru
3786 участников
if (!employees.equals("") && employees != null) {
Комментарии (5)
  • популярные
  • новые
  • старые
Для того, что бы оставить комментарий вы должны авторизоваться
SaLiK11 уровень, Ижевск
26 декабря 2016, 07:57
Почему бы не так?

try {
if (!employees.isEmpty()) {
// our code
}
catch (NullPointerException e) {
}

И еще понравилась статья на тему Null: www.yegor256.com/2014/05/13/why-null-is-bad.html
Nimmo25 уровень
12 августа 2015, 12:28
StringUtils.isBlank()
wayway10 уровень, Москва
26 мая 2014, 17:23
if (employees != null && !employees.equals(""))
ну вот это точно, а что еще?
vasiliy_urosov31 уровень, Thornbury
26 мая 2014, 17:35
метод isEmpty()
Izhak22 уровень, Москва
27 мая 2014, 02:18
Вот такой код
employees = null;
       if (!employees.isEmpty())
            System.out.println("Hi");

Даёт результат
Exception in thread "main" java.lang.NullPointerException
	at com.javarush.test.level15.lesson09.task05.Solution.main(Solution.java:22)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:606)
	at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)


Метод isEmpty() хорош, когда надо сравнить строку, для которой выделена память с ""

Аналогом может являться !employees.equals(""). Почему это проблема, описано в www.skipy.ru/technics/strings.html

Единственный момент, который хотелось бы упомянуть – сравнение с литералами. Я часто вижу конструкции типа str.equals(«abc»). И тут есть небольшие грабли – перед этим сравнением правильно бы было сравнить str с null, чтобы не получить NullPointerException. Т.е. правильной будет конструкция str != null && str.equals(«abc»). Между тем – ее можно упростить. Достаточно написать всего лишь «abc».equals(str). Проверка на null в этом случае не нужна.
То есть, рекомендуется !"".equals(employees)
Так как "" уже являются объектом типа String, то мы можем проверить на пустоту и строковый объект employees.

Но есть проблема
Если employees=null, то код

employees = null;
       if (!"".equals(employees))
            System.out.println("Hi");

Выведет
Hi
знач