hubert
41 уровень

Говнокод #20

Статья из группы Архив info.javarush
участников
if (!employees.equals("") && employees != null) {
Комментарии (3)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
wayway
Уровень 10
26 мая 2014, 17:23
if (employees != null && !employees.equals(""))
ну вот это точно, а что еще?
vasiliy_urosov
Уровень 31
26 мая 2014, 17:35
метод isEmpty()
Izhak
Уровень 22
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
знач