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

    +64

    1. 1
    reader = new CSVReader(new BufferedReader(new InputStreamReader(new FileInputStream(csvFile), "UTF-8")), Config.getCSVDelimiter());

    Хорошо что файл ещё не зазипован...

    Запостил: tinynick, 29 Июля 2010

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

    • Вот что бывает, когда есть сборщик мусора.
      Ответить
      • Я в сях без сборщика мусора такое пишу. Проектировать надо немного в голове.
        Ответить
        • Хорошее проектирование, N вложенных классов в одной строке.
          Разделяй и властвуй.
          Ответить
          • От целей все же зависит. Знаешь, бывают объекты которые мне не всрались, но должны быть все же в куче. И сборщик мусора тащит за собой гору ошибок. Ты как, в голове время жизни объектов хранить станешь? Или лучше создать связанную кашу и кидаться событиями в интах в виде статусов как в староСях?
            Ответить
            • Честно говоря не понял вопроса. Особенно про "стороСях".
              Если речь об отсутствии утечек памяти - используй auto_ptr и ему подобные.
              Или в общем, концепцию RAII.
              Ответить
              • стАроСи -- это C.
                Может у меня руки из жопы, но я не хочу пользоваться автоптр'ами. Ну, если только самописными. Мне гораздо проще контролировать память и объекты самостоятельно. Ну и я не сторонник завязывать проекты на подобных полуустоявшихся перделках. Имхо это не лучше mfc и .net. Короче, как си не предназначены уже для клиентского кода, так и сборщик мусора не предназначен для сей.
                В общем, веду я как раз к тому, что сборщик мусора не нужен в клиентском коде.

                -----

                я щас почитал выше и понял что я забыл о чем пишу. Короче, я уже не отражаю ниче.
                Мне пора из мира программирования, всё пропало ((
                Ответить
    • (Программисты ( на ( лиспе )) бы ( поняли ) )
      Ответить
    • да обычное дело, оборачивать один поток другим. и даже говнокода в этом нет, это правильно
      Ответить
      • Decorator in action ;)
        Ответить
        • что вы, обыкновенная композиция и наследование

          декораторы, я понимаю, когда при более сложных вещах, вроде того подхода, что применяется в аспектно-ориентированном программировании
          или псевдо-аспектные декораторы, как вот тут: http://tapestry.apache.org/tapestry5.1/tapestry-ioc/decorator.html
          Ответить
          • это именно что паттер декоратор (он же обертка)
            Ответить
            • а ну да, обертка
              хотя декоратор солиднее звучит для примитивной вещи )))
              Ответить
              • ну согласно ганг оф фор: декоратор (он же wrapper -- обертка) добавляет новый функционал объекту, не изменяя его интерфейс. Классическим примером врапперов могут служить такие вот обертки вокруг потоков.
                Ответить
                • конечно-конечно, я имею понятие о шаблонах проектирования.

                  но вещи, о которых я упомянул сразу, также называемые декораторами, на порядок более впечатляют
                  Ответить
    • Единственный говнокод
      вместо new InputStreamReader(new FileInputStream(csvFile), "UTF-8")

      new FileReader(csvFile)

      Можно еще избавится от BufferedReader, т.к. CSVReader по-моему все ридеры и так в него оборачивает (opencsv - так точно). Если же нет - то нормально, т.к. BufferedReader ускоряет чтение потока.

      Если же была бы какая-то экзотическая кодировка (utf8 в яве по умолчанию и так), то был бы оправдан первый вариант.

      Все остальное вполне нормально. Больше похоже на код недоучки, чем говнокодера
      Ответить
      • Вот вечно придет кто-нибудь серьезный и всё испортит)
        Ответить

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