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

    +75

    1. 1
    Long value = Long.valueOf(String.valueOf(avpValue));

    не специалист по жабе, но пахнет: сначала по всему коду нагородить огородов с Byte/Short/Integer/Long что бы потом в самом важном месте вот так в лоб все в Long конвертить...

    Запостил: Dummy00001, 03 Декабря 2012

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

    • нужно больше контекста, ибо подозреваю, что обертки там вообще не нужны, а особенно через String
      Ответить
    • нет там больше контекста. прога читает сообщения с финансовой информацией. из сообщения выкоревывается в класс (несколько классов для разных сообщений) около 90 полей различных типов, преимущестевенно Byte, Short, Integer и Long. потом делается извращенная херня что бы можно было еще к полям доступатся по номеру - аннотация + два Map<Integer,Method> (один мап для сеттеров, второй для геттеров). потом по всему коду - в центре всей бизнес логики - идет страдание с типами, Method.invoke(), и еще раз страдание с конвертацией из Object, потому что Method.invoke() возвращает Object. потом когда делается самая последня (и дорогая) операция перед посылкой ответа на транзакцию, вот так как сверху просто все в Ж конвертится в Long. вот как бы и вопрос: на кой хер кучи Г для страдания типами, когда можно все впихнуть в Long? что все равно и делается в конце? у меня такое впечатление что тот индус который это делал, к концу писания модуля просто устал с типами трахатся и по простой решил проблему.

      к слову, вопрос от лоха по жабе. а это как нибудь проще написать можно? без конвертации Byte/Short/Integer/Long в строку?
      Ответить
      • Если appValue - это какая-то из разновидностей Number, то:
        http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Number.html#longValue%28%29
        Ответить
        • странно что сам не догадался. на Number вроде даже всю доку прочитал. спа.
          Ответить
      • Видимо, авторы очень хотели писать на ruby, но была только java...
        Ответить
      • скастить в long и присвоить Long.
        Ответить

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