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

    +77

    1. 1
    2. 2
    3. 3
    public static boolean isNull(Collection collection) {
        return collection == null;
    }

    Запостил: mychka, 25 Июня 2012

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

    • Как будто хотели

      return (collection == null) || collection.isEmpty();


      но на полпути забыли.
      Ответить
      • Это был бы уже isNullOrEmpty()
        Ответить
      • Метод isEmpty (проверка на null или empty) есть, рядом. Метод isNull создан именно для проверки на null. Причём заточен на проверку не любых объектов, а именно коллекций :)
        Ответить
        • Жаль, что статик, а то такой хороший метод, можно было бы каждому классу подарить, ну или через интерфейс.
          Ответить
          • Полюбому нужен mixin
            Ответить
            • Палюбэ нужен абстрактный метапаттерн с параметром, чтобы сравнивать объекты с нуллом.
              Ответить
              • Нужна фабрика компараторов, это очевидно.
                Ответить
                • if (NullComparatorFactory.getInstance().cre ateNullComparator(nullable).compareWithN ull()) { ... }
                  Ответить
          • [ProblemFactory]
            Интерфейс Nullable, который должен заимплементить каждый из классов.
            [/ProblemFactory]
            Ответить
            • Кстати, есть аннотация Nullable, используемая для статического анализа кода.
              Ответить
          • Да. Жаль только, что он никогда не вернёт true :)
            Ответить
        • то что для коллекций: возможно делали через extract method и просто не обратили внимание на тип аргумента, который подставила иде. А так как не для коллекций метод не вызывался, то и не заметили.

          Неплохо бы еще варианты использования этого метода. Если для того чтобы эксепшн кинуть (типа assert, preconditions) - то просто метод не дописали (или не дорефакторили). Если же в условиях типа if (isNull(c)) { ... }, то метод весьма сомнителен.
          Ответить
          • Метод использовался для проверок типа if (isNull(c)).
            После удаления метода такие места заменены на if (c == null) (чаще if (c != null))
            Ответить

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