Мы не ищем легких путей…

Рубрика: Development, Java, Юмор | 11 February 2008, 15:44 | Vadim Voituk

Порою копаешься, по локти в де%ме, в коде, написанном разработчиками одной из самых доходных украинских компаний и начинаешь подозревать что им в буфете траву в кофе подсыпают.

Вообще я очень терпимо отношусь к чужому коду, и за последних несколько месяцев уже перестал удивляться разнообразным ляпсусам и ошибкам, связанными с неопытностью или незнанием – возможно на проект прийшел новичок, не все изучил, ещё не все узнал, опыта пока не набрался, документацию не дали или ещё недочитал и тд.

Но только что нашел настолько феноменальную реализацию проверки наличия записи в таблице БД, что удержаться не смог:
Немного упрощенная версия кода, без обработки исключений (это отдельная история!), соединений с БД и тд, все имена, фамилии, явки, изменены, все совпадения с реальными частями кода являются случайностью :)


...
Collection items = new ArrayList();
String sql = "SELECT '1'\n" +
"  FROM ... "; // тут следует большая куча неформатированного sql-кода

pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, this.getId());
pstmt.setInt(2, itemID);
rs = pstmt.executeQuery();

while (rs.next()) {
    items.add(rs.getString(1));
}
...
return !items.isEmpty();

И это наш, родной украинский парень – а вы говорите “индусы, индусы”…

P.S. Для любителей пообсуждать подобные “пЕрлы высоких технологий” существует русскоязычное комьюнити Programming WTF

Комментариев: 14

14 Responses to “Мы не ищем легких путей…”

Комментарии:

  1. Vovan

    Ну я думаю все мы не без греха и все когда-нибудь подобное написали в спешке или еще по какой-то иной причине :)

  2. Vadim Voituk

    Это как должны быть повернуты мозги, чтоб придумать ТАКУЮ реализацию?
    Для незнающих про COUNT() есть еще метод “выполнить запрос, пройтись по всем строкам увеличивая счетчик количества строк”.

  3. wheleph

    Зато запрос оптимизирован! Можно ведь было написать “select * from … “, а тут “select 1 from … “.

  4. Vadim Voituk

    wheleph: Ну тогда в следующий раз будешь сам этот код рефакторить :)

  5. Chabster

    А что в этом коде НЕ ТАК?

  6. Vadim Voituk

    А что в нем ТАК?
    Или ты таким же образом проверяешь наличие записи в БД?

  7. Chabster

    Этот код, возможно, был уже отрефакторен)))

    Вполне нормальный код. Несогласные могут привести свои варианты.

  8. Vadim Voituk

    Этот код отрефакторен не был и он является частью метода с аналогичными запросами длиной в 250-300 строк :)
    Свои варианты были приведены выше.

  9. Chabster

    Пешыте примеры кода. Со всеми проверками, явками, ставками и пр.

  10. Juriy

    return rs.next();

    В finally аккуратно зачищаем ресурсы.

  11. Chabster

    Шо, влом? Вот ему тоже было влом.

  12. Vadim Voituk

    Ему то ак раз не влом было написать лишних 10 строк кода :)

  13. Chabster

    Вероятно, сначала этот код выглядел не так. Собирались айдишники или еще какая хрень.

  14. Swed

    To Chabster:

    это ты писал ))) признавайся )))

Leave a Reply