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

    +136

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    recordSize=logicalRecordLength;
    BytesToRead=cnt*recordSize;
    records=cnt;
    while ( ((pos + BytesToRead)>dataSize)&&records )
    {
        BytesToRead = --records * recordSize;
    }

    Не думал, что у нас в коде встречу нечто явно похожее на пример №2 из статьи "Индусский код" на Луркморе.
    Ну и стоит добавить, что реально logicalRecordLength всегда равен 1.

    Запостил: vovochka, 21 Июля 2010

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

    • а где меняется pos?
      насколько я понял - весьма обфускатед замена фору.
      Ответить
      • тут вообще не нужен цикл.
        оптимизация выглядит как-то так:
        BytesToRead=cnt*recordSize;
        records = ( DataSize - pos ) / recordSize;
        if ( records < 0 )
           records = 0;


        а если учесть замечание про recordSize == 1, то

        BytesToRead=cnt;
        records = ( DataSize - pos );
        if ( records < 0 )
           records = 0;
        Ответить
        • Зачем вообще тогда BytesToRead, cnt?
          Ответить
          • 2 absolut
            +1
            и что с pos?

            тогда лучше оптимизировать так
            records = ( DataSize <pos ) ? 0 : (DataSize -pos );
            Ответить
          • они там ниже используются.
            говнокодовость - в ненужном while. остальное по сути к говнокодовости отношения не имеет.
            Ответить
            • ГК ценится когда он минимально достаточен.
              Ответить
    • > реально logicalRecordLength всегда равен 1
      sizeof char == 1 foreva :-D

      я вот тоже pos интересуюсь...
      Ответить
      • это не sizeof(char), функция вызывается только из "оболочки" - другой функции, в которой передается фиксированно 1
        Ответить
        • всегда ли? намекал на это:
          На проект mIRC unicode ушло почти 2 года разработок и тестирования и десятки тысяч изменений в более чем 150 тысячах строк исходного кода!
          Это вам не #define UNICODE написать =)
          Ответить

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