1. JavaScript / Говнокод #21994

    −48

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    if (old_value > new_value) {
            var add_val = '1';
            var old_value_str = old_value + '';
            for (var i = 0; i < old_value_str.length; i++) {
                add_val += '0';
            }
            new_value += parseInt(add_val, 10);
        }

    Сайт для оплаты услуг ЖКХ
    Обработчик формы ввода показаний счетчика
    Два инпута один заполнен сразу старым значением, второй надо заполнить самому
    Менять можно оба

    Что же делать когда новое значение меньше старого?
    Очевидно! Сделать его больше.



    https://www.gerc.ua/js/main.js 642 строка

    Запостил: zayass, 18 Января 2017

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

    • Код пытается отследить довольно редкое явление: переход счётчика через ноль. На старых четырёхзначных счётчиках был ненулевой шанс поймать такой переход. Новые пятизначные счётчики скорее заменят, чем они перейдут через ноль.

      Но вот только добавляется этот самый полный круг чисто по-индусски...
      Ответить
      • P.S. По-хорошему эта коррекция должна производиться не на стороне клиента, а на сервере энергетической компании исходя из модели счётчика, установленного у клиента.
        Ответить
      • Все равно хрень 1-2=9 это что один знак на табло?
        Ответить
        • В начале периода 9991, в конце 2, значит юзер потратил (10000 + 2) - 9991.
          Ответить
          • Это верно. Но код должен прибавлять фиксированное число (10000 для четырёхразрядных счётчиков, 100000 для пятиразрядных и т. д.), а прибавляет число, угаданное, исходя из введённых данных. Т. е. если клиент опечатался и перепутал местами текущее и предыдущее показания, то данный код молча что-нибудь добавит, причём добавка зависит от количества ведущих нулей в предыдущем показании.
            Ответить
        • Потому и говнокод.
          Ответить

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