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

    +75

    1. 1
    String s = (new StringBuilder()).append("c.").append(Integer.toString(i, 36)).append(".").append(Integer.toString(j, 36)).append(".dat").toString();

    Опять из сорцов минесрафта.
    У нотча видимо StringBuilder головного мозга.

    Запостил: RaZeR, 19 Августа 2011

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

    • Причём так практически везде.
      Ответить
    • жад и не такое выкинет ))
      Ответить
    • Ну жмакнул в IDE «Replace string concatenation by StringBuilder». Плёвое дело.
      Ответить
    • Ty lolka. Это не нотч так делает, это декомпилятор так делает.
      Ответить
      • Тогда другой вопрос - зачем декомпилятор так делает? :)
        Ответить
    • И почему ж это говнокод?
      Это оптимизация по времени!
      простая конкатенция строк работает медленей, потому что плодит кучу объектов String которые потом жава будет гарбажить.
      Ответить
      • Читаем про сложение строк в жабе http://www.skipy.ru/technics/strings.html
        Ответить
        • Ну прочитал.
          все правильно! Человек не хочет плодить лишние объекты String, и используюет StringBuiler а не StringBuffer, чтобы он не дергал впустую мутексы.
          в статье тоже предписывается никогда стринги напрямую не складывать. Не пойму.

          ну разве что... "Собственно, компилятор при оптимизации чаще всего так и делает – прямые сложения он выполняет через StringBuffer" <- это оно? можно было просто сложить стринги, надеясь что компилятор заоптимизирует, да?
          Да, это наверное оно. Спасибо.
          Ответить

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