1. Java / Говнокод #3058

    +64.8

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    public static Boolean parseBoolean(Object x)
         {
              if(x instanceof Integer)
                   return (Integer) x != 0;
    
              if(x == null)
                   return false;
    
              if(x instanceof Boolean)
                   return (Boolean) x;
    
              if(x instanceof Double)
                   return Math.abs((Double) x) < 0.00001;
    
              return !("" + x).equals("");
         }

    Веселый кусочег из эмулятора сервера Lineage II (Сборка от L2f).

    Запостил: VirtualVoid, 20 Апреля 2010

    Комментарии (24) RSS

    • И что тут смешного? Эмулируется сишная возможность сравнивать на true/false любой объект .

      В яве не шибко разбираюсь, но !("" + x).equals("") -- это трюк чтобы избежать NullPointerException при x == null?
      Ответить
    • насколько я знаю в яве есть функция isEmpty, но она для строк
      последний ретурн некий хитрый аналог этой функции для Object, ибо при сложении выполнится toString().
      по-моему аналогично return (!x.toString().isEmpty());
      чуток запутанно, но на gCode не смахивает
      Ответить
      • Проверка на null есть выше, '+' - дорогая операция, дешевле сделать toString(), единственный вариант, в этом проекте таки есть говнокод который создаёт x с методом toString() возвращающим null, но и тогда решение !"".equals(x.toString()). будет правильней. Итого - это говнокод, а плюсики на комментарий ты сам себе поставил.
        Ответить
    • А мне нравится. Очень универсально.
      Ответить

    Добавить комментарий