Кресты / Говнокод #2795 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
bool FindActualQtyOfWeightedReceptacle
                                 (      std::map<double,double> &ReceptacleWeighings,
                                  const double                   ReceptacleId,
                                        double                  &Weight)
{
   Weight          = 0.0;
   bool recepFound = false;
   
   for (std::map<double,double>::iterator iter  = ReceptacleWeighings.begin();
                                          iter != ReceptacleWeighings.end() && !recepFound;
                                          iter++)
   {  if (iter->first == ReceptacleId)
      {  recepFound = true;
         Weight     = iter->second;
      }
   }

   return(recepFound);
}

Во Франции одного ведущего (!) С++ программиста с ироничной фамилией Паскаль попросили таки ознакомиться со стандартными контейнерами из библиотеки STL. В частности с std::map. В итоге из-под палки он выдал вот такой "код". Возникает как минимум два вопроса:
1. производительность?
2. и зачем так многа букаф?

Пардон, Жан-Люк, не обижайся. Наговнокодил...

Запостил: azabluda azabluda, (Updated )

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

  • Senior девелоперы бывают и такими и это грустно
    Ответить
  • Меня больше всего умиляет, что для ID используется double. Если это его осознанное решение - к коду его больше пускать нельзя. Дать в руки Эксель и Визио, и пусть принимает великие архитектурные решения (кстати, все будут довольны).
    Ответить
    • насчет double ID... Боюсь это было решение было принято задолго до него. Так что, неверно не стану приписывать этот грешок a cher ami.
      Ответить
      • А за что минусуете "azabluda" то?

        Всегда бесило, когда какой-то пост минусуют, а никаких аргументов не предоставят.
        Ответить
    • Мне уже начинает казаться, что некий guest просто пытается побить рекорд по минусовому рейтингу, и для этого постоянно повторяет этот вопрос везде где это только можно и нельзя.
      Ответить
    • xaionaro озвучил мнение многих, и моё в том числе. Вопрос действительно повторяется кучу раз на сайте и зачастую совсем не к месту. Возможно даже это бот. Надеюсь достаточный аргумент?

      ps: и честно говоря, все равно не вижу смысла "беситься" по поводу минусов...
      Ответить
  • > Во Франции одного ведущего (!) С++ программиста с ироничной фамилией Паскаль

    Проклятие Паскаля
    Ответить
  • Так тщательно написано. Пока до тела цикла не дочитал я думал, что это не говнокод и собирался минусовать.
    Ответить
  • Помимо контейнеров еще бы и алгоримы изучали, так нет ведь, все велосипеды изобретают.
    Ответить
    • В данном случае алгоритмы не нужны. Хватит и map::find().
      Ответить
        • А хорошо бы по этому утвержению ссылочку на стандарт?

          Весьма верю, что после сложной операции с double, в значение могут закрасться "младшие биты", и тогда например
          myDouble != sqrt(myDouble)*sqrt(myDouble)
          В данной проге, судя по всему, сравниваются только ID, над которыми ни один даже самый отчаяный паскалист не станет так извращаться. Тобишь единственно, что с ними могло происходить, это серия присвоений. Или у тебя есть основания полагать, что результат не гарантирован даже в этом случае? В любом случае ссылка не помешает.
          Ответить
        • Только find для поиска использует operator<, так что это не страшно.
          Ответить
            • к чему этот спор, если автор всё равно ищет сравнением...
              Ответить
  • >> 2. и зачем так многа букаф?
    он же француз, они любят многабукаф. Ты просто половину букофф не читай и всё сразу станет нормально ))
    Ответить
  • оллоолоо!
    выучил чувак STL. первая double определена как const ибо у map ключ const.

    по поводу ==. map и set юзают понятие эквивалетности. иными словами должно быть

    if((! (iter->first < ReceptacleId) && ! (ReceptacleId < iter->first) )
    бла-бла;

    а вообще чувак жжот. нахрена он хранит Weight если ему нужно лишь выяснить наличие или отсутствие данного ID в map?
    Ответить
    • Из данного говнокода однозначно видно, что чувак не только ищет i->first и возвращает i->second через переменную Weight.
      Ответить
      • внатуре! хитер француз!
        не обратил внимание на ссылку
        Ответить

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

Из-за тебя ушел bormand, guest!

    А не использовать ли нам bbcode?


    8