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

    +74

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    for (int i = 0; i != nl.length(); i++)
    {
        out.write(nl.charAt(i));
    }
    
    for (int i = 0; i != footerStart.length(); i++)
    {
        out.write(footerStart.charAt(i));
    }
    
    for (int i = 0; i != type.length(); i++)
    {
        out.write(type.charAt(i));
    }
    
    for (int i = 0; i != footerTail.length(); i++)
    {
        out.write(footerTail.charAt(i));
    }
    
    for (int i = 0; i != nl.length(); i++)
    {
        out.write(nl.charAt(i));
    }

    Зачем писать функцию, когда можно успешно копипастить циклы

    http://grepcode.com/file/repo1.maven.org/maven2/org.bouncycastle/bcpg-jdk16/1.45/org/bouncycastle/bcpg/ArmoredOutputStream.java

    Запостил: roman-kashitsyn, 15 Декабря 2013

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

    • Стоп, они что, пишут строки непосредственно в бинарный поток? Тупо побайтово, отрезая старший байт у char?

      Мда. О кодировках они, похоже, не слышали.
      Ответить
      • А там же голое ascii, ничего страшного не случится.

        А через Charset походу не хотят конвертить из-за производительности. На каждую строку будет создаваться новый массив и все такое.

        P.S. Ну хотя можно и один раз сконвертить, в статике.
        Ответить
        • > Ну хотя можно и один раз сконвертить, в статике.
          И если это сделать в статике, то можно юзать версию write(), которая принимает byte[]. Будет намного шустрее, чем эти говноциклы ;)
          Ответить
    • Кстати, еще один прикол нашел:
      String          headerStart = "-----BEGIN PGP ";
      String          headerTail = "-----";
      String          footerStart = "-----END PGP ";
      String          footerTail = "-----";
      String          version = "BCPG v1.45";
      Все эти константы - не файналы, и даже не статики ;)
      Ответить
      • Столько слов писать руки отвалятся.
        Ответить
        • Отнюдь, сударь. От давления кнопок у авторов руки совсем не устают. Достаточно взглянуть на
          http://www.docjar.org/html/api/org/bouncycastle/openpgp/examples/ClearSignedFileProcessor.java.html
          по сути заново реализующий BufferedReader.
          Я ради интереса заглянул в сишную реализацию в gnupg, там код гораздо понятнее и вроде даже короче.
          Ответить
    • А массив писать низя?
      Ответить
      • byte[] - конечно можно.
        char[] и String - нельзя, полагается прогонять через Writer, чтобы в правильной кодировке писалось.
        Ответить

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