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

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    private Integer getIntegerValue(int length) throws PivotReadExeption {
            getValue(length);
            return this.stringBuffer.toString().trim().isEmpty()?0:Integer.valueOf(this.stringBuffer.toString());
        }
    
        private BigDecimal getDoubleValue(int length) throws PivotReadExeption {
            getValue(length);
            if(this.stringBuffer.toString().trim().isEmpty()) return null;
            return new BigDecimal(this.stringBuffer.toString().trim());
        }

    Сотрудник выдал. Это говнокод или нет?

    Запостил: gaal, 11 Сентября 2018

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

    • Ну как, вспомогательные функции для какой-то частной задачи. Немного смущает, что для одного типа по умолчанию 0, а у другого - null, но, может, это так и надо (хотя Java такая Java).
      Ответить
      • меня больше смущает "поезд"

        и повторное вычисление функции-создание объекта String для одного и тогоже объекта
        Ответить
        • Ну да, неоптимально и не очень красиво, но в качестве рабочих функций вполне. Написал и забыл.
          Ответить
    • Integer.valueOf(this.stringBuffer.toString()) <- trim забыл
      Ответить
      • Насколько же мерзко, когда строка и примитивные типы - объекты.
        Ответить
        • Там всё хуже. Есть примитивный int, а есть объект Integer.
          Ответить
          • А чем разнятся string и String же в плюсах?
            Ответить
          • А в Scala ещё хуже. Скаловские типы-обёртки c кучей методов при компиляции могут остаться сами собой, могут превратиться в джавовские обёртки, могут превратиться в примитивы. Пусть если что Роман поправит, но я пока так это понял.
            Ответить
    • Тут несколько признаков говнокода, вот некоторые из них.
      Первый признак:
      getValue(length);
      , судя по имени, кагбэ должен выдать результат, но ньэт!
      Второй признак:
      this.stringBuffer
      берётся неизвестно откуда.
      Третий (самый заметный) признак: формат кода скорее отсутствует, структуру функции трудно увидеть.
      Четвёртый признак: аналогичные, судя по именам, функции ведут себя не аналогично. Если буфер пустой, одна функция возвращает Integer(0), а другая null (и возвращать null вообще плохая практика, тоже можно трактовать как признак говнокода).
      Ответить

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