1. C++ / Говнокод #9472

    +1005

    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
    unsigned
    int
    length () {
    
        unsigned
        int
            number = (this -> number + 1) % 16;
        int
            second = size - number;
    
    
        return (second / 16) + (1 % ((second % 16) + 1)) + (1 % (number + 1));
    }

    Вот такая фигня у нас в коде, работающем в аппаратуре отображения и протоколирования данных на АЭС.
    Авторское форматирование сохранено.

    Нашли когда оно с новыми конфигами стало падать от деления на ноль при запуске.

    Запостил: Balthasar, 17 Февраля 2012

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

    • >отображения и протоколирования
      лишь бы не управления
      Ответить
    • "Как представлю, какой из меня инженер, боюсь идти в больницу..." (с)
      Ответить
    • форматирование кода специально такое, чтобы работа АЭС теперь не вызывала опасений у меня
      всё продумано до мелочей, чтобы программист не путался, и любые его неосторожные ошибки были сразу видны и мгновенно исправлены еще до первой компиляции
      Ответить
      • > форматирование кода специально такое, чтобы работа АЭС теперь не вызывала опасений у меня

        Вы ещё не видели как неймспейсы и классы отформатированы:

        namespace
        gate {
        
            namespace
            io {
        
                namespace
                dts {
        
                    namespace
                    channel {
        
                        namespace
                        packet {
        
                            namespace
                            block {
        
                                class
                                node_t {
                                
                                public :
        
                                    node_t (
                                        unsigned
                                        int
                                            address_transfer,
                                        unsigned
                                        int
                                            size_transfer,
                                        unsigned
                                        int
                                            index_transfer,
                                        const
                                        string::node_t&
                                            name_transfer
                                    ) :
                                    index (index_transfer),
                                    address (address_transfer),
                                    size (size_transfer),
                                    name (name_transfer) {}
        // ...
        // и так далее в таком духе
        // ...


        Именование классов — отдельная история.
        Ответить
        • Безусловная функция социального государства в том, чтобы даже инвалидам дать почувствовать пользу, приносимую ими для народного хозяйства, для страны, для нашей Родины. Каждый представляет, что с нищенской пенсией или пособием в наши годы дикого капитализма приходится выживать за чертой бедности, поэтому обеспечение таких людей рабочими местами, выплата им достойной ежемесячной заработной платы - первоочередная задача любого предприятия.

          А по делу - я думаю, программер вас дико троллит, т.к. получает з/п по количеству строк кода.
          Но он сплоховал - надо было скобки перенести на следующую строку, и еще лучше разбить их пустой строкой
          Ответить
          • > А по делу - я думаю, программер вас дико троллит, т.к. получает з/п по количеству строк кода.

            Вполне возможно троллит, но количество строк в вычислении з/п точно не фигурирует. У нас в чужой код смотрят обычно только в случае, когда автора уже нет с нами.
            Ответить
            • > когда автора уже нет с нами.
              умер от облучения?
              Ответить
              • продемонстрировал свой код коллегам, затем случайно подскользнулся, нанеся себе побои, и свалился в активную зону
                Ответить
    • `size` не определено... мозги отказываются компилить этот код.

      для `(1 % (x + 1))` ничего другого кроме как `x == 1 ? 0 : 1` не придумал, только с той разницей что оригинал аналитически считает, без flow control'а.

      но без определения и диапазона значений переменной `size` как бы сложно догадатся что именно эта функция делает. (и только из-за кривого значения этой переменной деление на ноль и может произойти.)
      Ответить
      • size — член класса, количество бит в битовом "массиве" в пакете.
        this->number — индекс бита в 16-битном слове, с которого начинается "массив".

        Функция, как удалось выяснить по способу её использования, вычисляет количество 16-битных слов, в которые попали биты из "массива".

        Делается это не так уж часто, чтобы экономить на тактах.
        Ответить
        • Ах да, там этих массивчиков штук по 10 разного размера и в т.ч. размера совпадающего с индексом первого бита.
          Такое количество обусловлено тем, что для каждого массива id значений для SCADA и другие параметры задаются отдельно.
          Ответить
    • Крестоговно на АЭС? Желаю вам скорейшей Фукусимы.
      Ответить
    • Страшно что такой говнокод аж на АЭС... В России везде что ли так? Тогда не удивительно какие результаты ЦИК'а на выборах будут, не то чтобы на фальсификация, ошибка в ПО = (
      Ответить
      • Нормальный код вообще-то. Вы бы видели что у нас творится... Пишем электронику для самолетов кстати) На работу берут всех желающих независимо от умения программировать (и меня взяли (: ), ибо зарплата с гулькин нос
        Ответить
        • >независимо от умения программировать (и меня взяли (: )
          как же тебе, блять, не стыдно
          Ответить
    • Тогда уж использовали бы Ada, чем с крестами петушиться.
      Ответить
      • Да ты им не объяснишь, пионеры, воспитанные на "кресты кулхацкеры крута", не поймут, как это вообще можно что-то писать на языке, который, о ужас, сопротивляется обращению к массиву за диапазоном, ведь он же не даёт "делоть как я хачу".
        Ответить
      • можно подумать, после трансляции этой функции в Аду эта функция будет выглядеть намного лучше...
        Ответить
        • Ну так можно и про АТС сказать -
          "можно подумать, что АТС-код после трансляции на С станет содержать ошибки".
          Ответить

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