1. Си / Говнокод #7057

    +137

    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
    int    bufImin[32]={ 4000,  4000,  4000,  4000,  4000,  4000,  4000,  4000,  4000,  4000,  4000,  4000,  4000,  4000,  4000,  4000};
    int    bufImax[32]={20000, 20000, 20000, 20000, 20000, 20000, 20000, 20000, 20000, 20000, 20000, 20000, 20000, 20000, 20000, 20000};
    double bufPmin[32]={    0,     0,     0,     0,     0,     0,     0,     0,     0,   315,     0,     0,     0,     0,     0,     0};
    double bufPmax[32]={    6,    10,     1,    10,    40,    10 ,   10,    10,    10,  -315,     0,     0,   100,   100,    10,  1000};
    
    /*...*/
    bufPmin[9]=(double)CR1_Lb1_4mA*5-500.0;
    bufPmax[9]=(double)CR1_Lb1_20mA*5-500.0;
    Presh[9]=CurrentToPresh(I_9, bufImax[9],bufImin[9],bufPmax[9],bufPmin[9]);
    
    bufPmin[10]=(double)CR1_Lb2_4mA*5-500.0;
    bufPmax[10]=(double)CR1_Lb2_20mA*5-500.0;
    Presh[10]=CurrentToPresh(I_10, bufImax[10],bufImin[10],bufPmax[10],bufPmin[10]);
    
    /*...*/
    
    bufPmax[10]=(double)CR5_Tg_max;
    Presh[15]==CurrentToPresh(I_15, bufImax[15],bufImin[15],bufPmax[15],bufPmin[15]);

    Разгребаю г*вно от предыдущего программиста...
    - зачем массивы на 32 элемента, если их всегда 16.
    - зачем массивы с одинаковыми данными.
    - зачем инициализировать массив числами, которые никогда не используются.
    - массивы используются только для передачи значений в функцию.
    - 17 строка. Это ж надо спутать индекс; как незаметно.
    - 18 строка. :) ==3
    - "Presh" отнюдь не значит "precious", как подумали б американцы. Это Pressure по своей сути.

    Запостил: MereNonsense, 25 Июня 2011

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

    • bufMan
      Ответить
    • Trash
      Ответить
    • индустриальная автоматизация? пахнет очень ... знакомо.
      Ответить
      • хе-хе. так точно =)
        Ответить
        • тоесть, это я отвечал..
          Ответить
          • уловил. жаль что ГК сделали уже после того как я с тем делом завязал. я никогда не забуду про тот open-coded strnlen() с 3мя ошибками, писаный моим манагером.
            Ответить
    • - зачем массивы на 32 элемента, если их всегда 16.

      Элементов - 32, просто верхние 16 автоматически проинициализированы нулями. А используются ли они в коде - это уже к вам вопрос. Если принципиально не используются, то тогда, конечно, они лишние.

      - зачем массивы с одинаковыми данными.

      Придирка необоснованная. Массивы скореее всего содержат некоторые настраиваемые значения, которые в общем случае будут разными. Это просто в вашем частном случае они оказались выставлены в одинаковые значения. Т.е. массивы были заведены для того, что иметь возможность задать разные элементы. Просто пока эта возможность не понадобилась.

      - зачем инициализировать массив числами, которые никогда не используются.

      Ну для этого надо видеть всю картину работы с этими массивами в коде... Вам виднее.

      - массивы используются только для передачи значений в функцию.

      И?
      Ответить
      • - всегда использовались только 16 элементов.
        - там, где одинаковые значения - они таки настраиваемые, но в 90% случаев равны 4000 и 20000. И это дублирование - настройка осуществляется в другом, более официальном и обязательном месте.
        - я уже показал всю картину - число записывается в массив, потом заменяется другим числом и передается в функцию. А если не заменяется - этот Presh никого не интересует.
        - "массивы используются только для передачи значений в функцию" - проще использовать две переменные (не массивы) bufPmin, bufPmах или же передавать (double)CR1_Lb1_4mA*5-500.0 и все подобное сразу в функцию. Все те 4 массива больше нигде не используются.
        Ответить
      • Аффтор?
        Ответить
        • м? Не я..
          Изготовитель промышленных контроллеров дал автору пример программы, чтобы было с чего начать, на что упираться. А тот подправлял пример под свои задачи, особо не напрягаясь или не понимая, что делает.
          Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить

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