Jawa / Говнокод #11504 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
public static class FuckMeGentlyWithAChainsaw {
    /* This wrapper class exists to work around the possibly most
    * stupid Java bug ever (and that's saying a lot): That
    * URL.equals and URL.hashCode do DNS lookups and
    * block. Which, of course, not only sucks performance-wise
    * but also breaks actual correct URL equality. */
    public final URL url;
    public FuckMeGentlyWithAChainsaw(URL url) {
        this.url = url;
    }
}

Код из клиента одной онлайн игрушки, процитирован дословно.

Запостил: bormand bormand, (Updated )

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

    • Ну собирается на шестой-седьмой, но это не важно:

      Two hosts are considered equivalent if both host names can be resolved into the same IP addresses; else if either host name can't be resolved, the host names must be equal without regard to case; or both host names equal to null.

      Since hosts comparison requires name resolution, this operation is a blocking operation.
      Ответить
      • я вот что то не понял, какой вообще смысл сравнивать url по айпишникам, на которые они резолвятся? не сходится ни с виртуальным хостингом, ни с зеркалированием
        Ответить
        • Не было тогда Блоха с его Effective Java.

          И не было ещё понимания, что URL - это синтаксическая конструкция, и что сравнивать её нужно синтаксически. Сановцы, поди, думали (писалось-то это в суровые девяностые и предназначалось в основном для загрузки всяких картинок в апплеты): вот мы какие опупеть крутые, сравниваем URL семантически!

          И не было понимания того, что в equals и hashCode нельзя выполнять дорогие операции.
          Ответить
        • Очень глупо они реализовали этот equals. Если имя резольвится в несколько ойпи, то http://google.ru с некоторой вероятностью не равно http://google.ru, я молчу про виртуалхосты 😉

          Кстати в документации ниже об этом сказано:
          Note: The defined behavior for equals is known to be inconsistent with virtual hosting in HTTP.
          Ответить
  • А java.net.URI не спасёт гиганта мысли? URL, по сути, deprecated, единственное, что есть у URL и нет у URI - это openStream.
    Ответить
  • - Так вот, мы предлагаем тебе самый разумный выход из ситуации. Ты остаёшься у нас, у меня есть связи в Москве, мы выясняем всё про твою квартиру, а потом видно будет.
    Ответить

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

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

    А не использовать ли нам bbcode?


    8