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

    +1000

    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
    if(SpokaneFileList->Strings[i].SubString(1,8).ToInt() < 1000){
          imageFolder="00000\\";
        }else if (SpokaneFileList->Strings[i].SubString(1,8).ToInt() < 2000){
          imageFolder="00001\\";
        }else if (SpokaneFileList->Strings[i].SubString(1,8).ToInt() < 3000){
          imageFolder="00002\\";
        }else if (SpokaneFileList->Strings[i].SubString(1,8).ToInt() < 4000){
    ....
          imageFolder="00034\\";
        }else if (SpokaneFileList->Strings[i].SubString(1,8).ToInt() < 36000){
          imageFolder="00035\\";
        }else if (SpokaneFileList->Strings[i].SubString(1,8).ToInt() < 37000){
          imageFolder="00036\\";
        }

    Сегодня чувствую себя сказочным героем (Гераклом) в весьма не сказочно обкаканном месте (авгиевых конюшнях),
    которому надо это место отмыть до блеска...

    меняю куски наподобие такого, как выше, каждый длиной по 75 строк - на вот такую конструкцию собственного сочинения -

    int sfFactor = SpokaneFileList->Strings[i].SubString(1,8).ToInt();
    int imageFolder = StringHelper::NormalizeString(IntToStr(s fFactor/1000), 5, "0", true, true) + "\\";

    - FYI функция StringHelper::NormalizeString() занимает 19 строк.

    На добивание:
    такие куски встречаются в программе около 20 раз (!!!)

    Индийский код - не признак национальности, а способ мышления...

    Запостил: dm-ua, 19 Декабря 2011

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

    • а борланд то предоставляет свободу
      хочешь руками разверни говноцикл 37 раз, хочешь к int imageFolder присвой строку, хочешь в 19 строках напиши велосипед того, что могло занять одну с помощью std::ostringstream или, прости господи, даже sprintf
      Ответить
      • Поделить на тыщу, привести к строке, добавить нули. Ты придумываешь проблемы, которых нет.
        Ответить
        • > int imageFolder = строка
          > FYI функция StringHelper::NormalizeString() занимает 19 строк.
          я придумываю??
          Ответить
          • и да
            разве
            SubString(1,8).ToInt(), потом /1000, потом обратно к строке - не проще ли сразу SubString(1,5)
            как раз 5 символов и получится
            Ответить
            • А в самом деле же, тогда вообще действия автора не понятны.
              Ответить
          • Ну дык видишь - и в крестах это не волшебным образом взялось, тоже кто-то писал библиотеку. И в дельфях библиотека есть.
            Ответить
    • насчет int правда, меня компилятор уже обругал :)
      насчет sprintf - спасибо за идею, NormalizeString() перепишу :) она у меня немножко умнее чем sprintf, и используется не только для этого, так что там будет не один sprintf(), а четыре
      Ответить
    • О
      самый изящный способ -
      AnsiString imageFolder = SpokaneFileList->Strings[i].SubString(1,5) + "\\";

      чувствую себя индусом :(
      Ответить
      • я быстрее :-P
        Ответить
      • я быстрее :-P
        Ответить
        • чертовы глюки ГК
          Ответить
          • ты постишь какую-то хуйню
            Ответить
            • да ты охуенно проницательный, оранжевый кал

              defecate-plusplus 19.12.2011 12:20 # +4
              и да
              разве
              SubString(1,8).ToInt(), потом /1000, потом обратно к строке - не проще ли сразу SubString(1,5)
              как раз 5 символов и получится


              [i]dm-ua 19.12.2011 12:21 # 0
              О
              самый изящный способ -
              AnsiString imageFolder = SpokaneFileList->Strings.SubString(1,5) + "\\";

              чувствую себя индусом :(
              Ответить
              • ну ладно, угойворил
                ты постил, постишь и будешь постить какую-то хуйню
                Ответить
    • > SpokaneFileList->Strings[i]
      тут вообще вся модель данных под вопросом
      Ответить
      • модель данных не под вопросом. Модель данных - вообще полный ПИИИИИИИИИ...
        Только менять нельзя, такой глубокий рефакторинг кастомер не оплатит.
        Кстати, автор исходного говнокода, доставшегося мне по наследству - америкос, а не индус
        Ответить
    • Пик маразма -

      .....
      else if(tempFile->Strings[j].ToInt() < 98000){
      sourceDir = "00097\\";
      }
      else if(tempFile->Strings[j].ToInt() < 99000){
      sourceDir = "00098\\";
      }
      else if(tempFile->Strings[j].ToInt() < 100000){
      sourceDir = "00099\\";
      }
      Ответить
    • показать все, что скрытоvanished
      Ответить

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