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

    +129

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    private static BigDecimal ZERO;
    private static BigDecimal ONE;
    private static BigDecimal TWO;
    private static BigDecimal FIVE;
    private static BigDecimal FOUR;
    private static BigDecimal SEVEN;
    public static BigDecimal SMALLDECIMAL;
    private static BigDecimal THREEHUNDRED;

    http://multilevellayout.googlecode.com/svn-history/r13/trunk/MultilevelLayoutPlugin/src/multilevelLayoutPlugin/MultilevelLayoutAlgorithm.java

    Запостил: someone, 15 Июля 2012

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

    • и где по ссылке указанный ГК?
      Ответить
      • На строке 66 же.
        Ответить
        • ха. В поиске стояла галка учесть регистр. Вот и не находило при ручном поиске :)
          Ответить
    • а в чем ГК?
      Ответить
      • не все числа перебрали
        Ответить
        • я так понимаю они все используются внутри. или нет?
          Ответить
          • SMALLDECIMAL ещё и снаружи
            Ответить
            • Причем или я туплю, или для целых чисел указывать MathContext необязательно...
              Ответить
            • так в чем ГК?
              Ответить
              • Вас не смущает, что статические поля обновляются из нестатичесткого метода updateSettings?
                Ответить
                • есть немного. ну так и надо было это постить.

                  а в том чтобы иметь константы для специальных значений, тем более для BigDecimal не вижу ничго плохого
                  Ответить
                  • меня, например, плющит от того, что они не final и не проинициализированы. FOUR вдруг изменит значение при другой конфигурации, ага... ONE и ZERO есть в BigDecimal.
                    Ответить
                    • В BigDecimal не такие ONE и ZERO, у них округление через MathContext не настроено.
                      Ответить
                    • к этому куску то, что они не финальные и не инициализированы - соглашусь.

                      Если же рассматривать весь класс - их нельзя сделать финальными и проинициализировать, т. к. инициализация зависит от конфига.

                      А вот публичное поле, которое прикидывается константой - тут я ничего не имею против :) (помнится, был большой холивар, когда выкладывал свой код с подобной штукой)
                      Ответить
                      • > их нельзя сделать финальными и проинициализировать, т.к. инициализация зависит от конфига
                        MathContext может повлиять на округление маленьких целых чисел? Ну их тогда нафиг, эти BigDecimal'ы...
                        Ответить
      • Константы должны быть описательными, ваш КО
        Ответить
    • > BigDecimal SMALLDECIMAL
      http://fuuu.us/179.png
      Ответить
      • действительно странноватое название
        Ответить
    • private static BigDecimal THREEHUNDRED;

      Забыли ещё
      private static BigDecimal OVER9000;
      Ответить
      • OVER9000 вносит неоднозначность, так же как и SMALLDECIMAL. Значит должен быть public.
        Ответить

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