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

    0

    1. 1
    https://github.com/catboost/catboost

    Похоже яндекс заопенсорсил свежую версию аркадии. Давайте обсирать эти их велосипеды.

    Запостил: FrauSchweinhund, 19 Июля 2017

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

    • https://github.com/catboost/catboost/blob/master/CPP_STYLE_GUIDE.md
      > Don't use boost, and limit use of STL (Use optimized counterparts available in /util instead of some of the parts that are poorly implemented in STL, such as std::string -> TString, std::streams -> TInputStream, TOutputStream). We don't encourage reinventing the wheel (we've already invented everything and just check the /util).
      Ответить
      • yeah, they sure discourage reinventing the wheel
        Ответить
        • > yeah, they sure discourage reinventing the wheel

          If wheel made from frozen shit, then it makes sense
          Ответить
    • if (errorHappened) {
          ythrow TSomeException(numericCode) << "error happened (" << usefulDescription << ")";
      }

      Они кидают исключения специальным оператором йкинуть.
      Ответить
    • Обосрал лицо твоей мамки, проверь.
      Ответить
    • https://github.com/catboost/catboost/blob/37378d278a57a2464547e07e48a2c779d888e174/contrib/libs/cxxsupp/openmp/kmp_environment.c#L183


      Классика
      return ( ( value == NULL ) ? ( 0 ) : ( 1 ) );
      Ответить
      • но это конечно к самому catboost отношения не имеет. Это так, какая-то левая херня из зависимостей
        https://github.com/catboost/catboost/blob/master/catboost/libs/algo/error_functions.cpp эта хрень на плюсах написана, но в каком-то сишечном стиле, без всяких там std:kokoko

        Вот тут
        https://github.com/catboost/catboost/blob/master/catboost/libs/algo/greedy_tensor_search.cpp#L25 уже есть парашная плюсовая лямбда
        Ответить
        • Надо было использовать Bing
          Ответить
        • > но в каком-то сишечном стиле
          Оно было бы в сишечном стиле, если бы все переменные были однобуквенные, вместо const double* войд звездочка, и пара маллоков без парных фри. А так обычные плюсы.
          Ответить
          • не путайте лабораторный си с толковым
            Ответить
            • Это какая-то ложная альтернатива. Я говорю про типичный си из ирл индустрии, а не лабораторий.
              Ответить
        • > в каком-то сишечном стиле

          for (auto& curSoftmax : *softmax)

          > без всяких там std:kokoko

          Во втором файле тоже ни одного std::кококо нет
          Ответить
        • Первый же метод в первом же файле:
          1. Сигнатура: void(const yvector &, yvector *), когда можно было спокойно сделать yvector(const yvector &). Даже проверка валидности входных данных отсутствует. Типа быстрее?
          2. Находим юз MaxElement, эта шо за покемон? Переходим, voila:
          https://github.com/catboost/catboost/blob/master/util/generic/algorithm.h
          файлик, на 90% состоящий из переименовывания stl. Но юзать stl некошерно же. На дефайнах бы хоть компилилось быстрее. Там в общем-то вся generic папка - супертонкие врапперы над stl
          Ответить
          • > Сигнатура: void(const yvector &, yvector *), когда можно было спокойно сделать yvector(const yvector &).
            Эта кодовая база появилась до с++11, если что.
            Ответить

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