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

    +81

    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
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    public class Constants {
    
        /* ... */
    
        public static final int FOUR = 4;
        public static final int THREE = 3;
    
        public static final int INTEGER_FOUR = 4;
        public static final int INTEGER_FIVE = 5;
        public static final int INTEGER_ONE = 1;
        public static final int LENGTH_FOUR = 4;
        public static final int LENGTH_FIVE = 5;
        public static final int LENGTH_SEVEN = 7;
        public static final int LENGTH_EIGHT = 8;
        public static final int LENGTH_NINE = 9;
        public static final int LENGTH_ELEVEN = 11;
        public static final int LENGTH_TWELVE = 12;
        public static final int LENGTH_EIGHTEEN = 18;
        public static final int LENGTH_FIFTEEN = 15;
        public static final int ONE = 1;
        public static final int INTEGER_FIVE = 5;
        public static final int INTEGER_ONE = 1;
        public static final int PLUS_ONE = 1;
        public static final int INTEGER_THREE = 3;
    
        public static final Long LONG_VALUE_TEN = Long.valueOf(10);
        public static final Long LONG_VALUE_ZEARO = Long.valueOf(0);
    
        public static final BigDecimal BIGDECIMAL_ZERO = new BigDecimal(0);
        public static final BigDecimal BIGDECIMAL_ONE = new BigDecimal(1);
    
        public static final BigDecimal NEGATIVE_NUMBER_ONE = new BigDecimal(-1);
    
        public static final int COMPARE_RESULT_ZERO = 0 ;
        public static final int COMPARE_RESULT_ONE = 1 ;
        public static final int COMPARE_RESULT_NEGATIVE = -1 ;
    
        /* ... */
    
        public static final String NINE_STRING = "9";
        public static final String ONE_STRING = "9";
    
    }

    Хардкодить волшебные числа - плохой стиль. @dailywtf

    Запостил: bugmenot, 20 Августа 2010

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

    • казалось бы, тип говнокода не оригинален. но FOUR и тут же INTEGER_FOUR - эта плюс.
      хотелось бы, что бы до автора донесли, что волшебные числа сами по себе не так плохи, как ничего не говорящие константы
      Ответить
    • $ cat /usr/include/boost/math/constants/constants.hpp
      ...
      BOOST_DEFINE_MATH_CONSTANT(pi, 3.141592653589793238462643383279502884197169399375105820974944, 
      59230781640628620899862803482534211706798214808651328230664709384460955058223172535940812848111745028410270193852110555964462294895493038196, 0)
      //...
        BOOST_DEFINE_MATH_CONSTANT(third, 0.3333333333333333333333333333333333333333333333333333333333333333333333, 
      3333333333333333333333333333333333333333333333333333333333333333333333333, 0)
        BOOST_DEFINE_MATH_CONSTANT(twothirds, 0.66666666666666666666666666666666666666666666666666666666666666666666, 
      66666666666666666666666666666666666666666666666666666666666666666666667, 0)
        BOOST_DEFINE_MATH_CONSTANT(pi_minus_three, 0.141592653589793238462643383279502884197169399375105820974944, 
      59230781640628620899862803482534211706798214808651328230664709384460955058223172535940812848111745028410270193852110555964462294895493038196, 0)

      ...
      Ответить
      • С этими даблами морока, их надо округлять.
        К примеру в браузерной строке адреса наберите:
        javascript:alert(0.1 + 0.2)
        получите
        0.30000000000000004

        Так что тут это может оправдано.
        Так что вот так.
        Ответить
    • А повторяются, видимо, для надежности.
      Ответить
    • а чо
      public static final String ONE_STRING = "9";
      Ответить
    • Автор умеет считать только до 18-ти? Слабовато для 5-го класса =)
      Ответить
    • LONG_VALUE_ZEARO
      Ответить
    • Волшебно.
      Ответить
    • Когда-то программисты на GWBasic-е вовсю использовали этот прием в целях оптимизации кода и еще чтобы сделать его менее читаемым. При этом имена констант старались максимально сокращать. Кто-то копировал куски чужого кода в свой, так что некоторые константы кочевали из листинга в листинг. Например, если "пи" называлось PI, то число 180 почему-то часто обозначали K.
      Ответить
      • шикарно. хорошо, что мне не пришлось работать с такими творениями
        Ответить
      • зачем делать код менее читаемым? сделать себя ещё более незаменимым?
        Ответить
        • с той же целью, с которой сейчас запускают обфускаторы
          Ответить
          • хм..
            ну обфускатор делает нечитабельным сорс, интерпритируемый из байт-кода, иначе ео не скроешь
            а как в нежелательные руки попадал сорс на гвбасике?
            Ответить
            • Да нет, не обязательно дизассемблированный байт-код. Вот, например, обфускатор для JavaScript: http://www.daftlogic.com/projects-online-javascript-obfuscator.htm.
              Ответить
              • да, верно
                говорил про обфускацию с целью скрытия
                и забыл про обфускацию с целью компрессии
                Ответить
                • Content-Encoding: gzip уделает любой супер-дупер лицензионный javascript compressor enterprise edition
                  Ответить
              • WTF? Как соотносятся GW-BASIC и байт-код?

                http://jsbeautifier.org/ если чо
                Ответить
                • Я как раз и хотел сказать, что байт-код тут ни при чем.
                  Ответить
          • это еще до gwbasic зародилось и причиной имело жуткую нехватку памяти на тогдашних писюках
            Ответить

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