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

    +77

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    Set<String> allDocs = new HashSet<String>();
    allDocs.addAll(getQuery(app).execute(query.toString()));
    ArrayList<String> result = new ArrayList<String>();
    if (allDocs !=null){ 
      result.addAll(allDocs);
    }

    Самое хорошее в строках 1 и 4, потому что хз, че там у этой джавы на уме. Лишняя проверка никогда не лишняя.

    Запостил: croacker, 16 Марта 2013

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

    • Кстати у некоторых компиляторов сишки есть забавная оптимизация - если компилятор видит, что программист разадресовал указатель, значит там всяко не NULL (не будет же адекватный программист его разадресовывать без проверки?) и все проверки на NULL от этого использования до следующего изменения этой переменной выкидывает нафиг (т.к. если там был не нулл - то какой смысл проверять еще на раз, а если там был нулл - то это UB, и уже на все насрать).
      Ответить
    • Непонятен сам смысл переливания из контейнера в контейнер.

      Разве что это подаётся на вход какому-нибудь API, которому нужен именно List, а не Set (обычно, если не нужна индексация, большинство API на вход принимает Collection или даже Iterable). А то, получается, сначала похерили порядок, но получили уникальность (HashSet), а теперь перекладываем в контейнер, который не гарантирует уникальность, но гарантирует порядок (уже похеренный). Где логика?
      Ответить
      • Ну и плюс сложно понять, почему нельзя отсеить дубликаты на уровне запроса к ресурсу.
        Ответить
        • Может, там не SQL, а мега-ынтырпрайзный PopovQueryLanguage++, который не умеет в DISTINCT?
          Ответить
          • Ну видел я одну реалтаймовую базу, которая не может в distinct и group by, но это был закрытый проект глубоко в недрах Ericsson. А тут небось какой-нибудь Documentum, наверняка язык поддерживает такое...
            Ответить
          • Это мега-ынтырпрайзный DQL. Он все умеет, просто этот кусок, скорее всего, побырому переписывался несколькими поколениями наследников, по этому так получилось.
            Ответить

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