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

    +12

    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
    AttachmentService::MimeType AttachmentService::mimeTypeByCodeKey(const QString &codeKey) const
     {
         if(codeKey.toLower() == QString("MimeType_PDF").toLower())       return MimeType_PDF;
         if(codeKey.toLower() == QString("MimeType_JPEG").toLower())      return MimeType_JPEG;
         if(codeKey.toLower() == QString("MimeType_PNG").toLower())       return MimeType_PNG;
         if(codeKey.toLower() == QString("MimeType_HTML").toLower())      return MimeType_HTML;
         if(codeKey.toLower() == QString("MimeType_ZHTML").toLower())     return MimeType_ZHTML;
         if(codeKey.toLower() == QString("MimeType_TEXT").toLower())      return MimeType_TEXT;
         if(codeKey.toLower() == QString("MimeType_XLS").toLower())       return MimeType_XLS;
         if(codeKey.toLower() == QString("MimeType_DOC").toLower())       return MimeType_DOC;
         if(codeKey.toLower() == QString("MimeType_PPT").toLower())       return MimeType_PPT;
         if(codeKey.toLower() == QString("MimeType_GIF").toLower())       return MimeType_GIF;
         if(codeKey.toLower() == QString("MimeType_BMP").toLower())       return MimeType_BMP;
         if(codeKey.toLower() == QString("MimeType_MPEG").toLower())      return MimeType_MPEG;
         if(codeKey.toLower() == QString("MimeType_MP4").toLower())       return MimeType_MP4;
         if(codeKey.toLower() == QString("MimeType_MP3").toLower())       return MimeType_MP3;
         return MimeType_UNKNOWN;
    }

    Коллега откопал в моём коде, написанном под какими-то веществами по ходу.
    Изначально было сравнение строк как есть, без приведения в нижний регистр, а потом понадобилось подстраховаться от левого регистра символов.

    FlySnake, 09 Мая 2014

    Комментарии (24)
  2. C++ / Говнокод #15932

    +12

    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
    QVector<int> v1;
    v1.push_back(1);
    v1.push_back(2);
    
    // взяли итератор на нулевой элемент вектора v1
    QVector<int>::iterator it = v1.begin();
    
    // замутили копию
    QVector<int> v2 = v1;
    
    v1[1] = 42;
    *it = 5;
    v2[1] = 100500;
    
    // и что же мы получим?
    qDebug() << v1; // QVector(1, 42)
    qDebug() << v2; // QVector(5, 100500)

    Ловим лулзы с implicit sharing'ом.

    Мораль (она описана в доке): нельзя копировать implicit shared контейнер пока живы и используются неконстантные итераторы на его элементы.

    bormand, 06 Мая 2014

    Комментарии (88)
  3. C++ / Говнокод #15928

    +17

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    template<class Container>
    void COW_guard(Container& forUnCow){
      const Container c={};
      cc+=c;
    }

    LispGovno, 06 Мая 2014

    Комментарии (56)
  4. C++ / Говнокод #15893

    +73

    1. 1
    http://bnw.im/p/JCBN9N

    https://bnw.im/u/j123123

    j123123, 04 Мая 2014

    Комментарии (10)
  5. C++ / Говнокод #15885

    +17

    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
    19. 19
    cKeyCfg::types_t cConfiguration::SearchInType(string type)
    {
        CTint i = 0;
        const CTbyte * types[] = { "S", "D" };
    
        for(i = 0; i < sizeof(types)/sizeof(types[0]); i++) {
          if ( strcmp(type.c_str(),types[i]) == 0) {
            switch (i) {
            case 0: // Is string
              return cKeyCfg::stringa;
            case 1: // Is decimal
              return cKeyCfg::decimale;
            default: //Default value VT_BSTR
              return cKeyCfg::unknow;
            }
          }
        }
        return cKeyCfg::unknow;
    }

    сделано на родине Fiat'а.

    Dummy00001, 02 Мая 2014

    Комментарии (6)
  6. C++ / Говнокод #15881

    +15

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    tblib::operator << (s, curVersion);
    tblib::operator << (s, indPlayer);
    tblib::operator << (s, indDiamond);
    tblib::operator << (s, indDisk);
    tblib::operator << (s, indExit);
    tblib::operator << (s, indDust);

    Нельзя просто взять, и написать
    s << curVersion << indPlayer << indDiamond << indDisk << indExit << indDust;
    потому что глючный крестоблядский крестокомпилятор (MSVS-03) не может выбрать нужную крестоперегрузку.
    "Сразу записать инт, или сначала кастануть его к жопе и записать жопу?"

    TarasB, 01 Мая 2014

    Комментарии (15)
  7. C++ / Говнокод #15874

    +63

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    template <typename T>
    void function_name(T &&data)
    {
        static_assert(std::is_rvalue_reference<decltype(data)>::value, "data must be rvalue");
        // ...
    }

    Все лишнее убрано

    Setry, 30 Апреля 2014

    Комментарии (14)
  8. C++ / Говнокод #15865

    +59

    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
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    #include <iostream>
    using namespace std;
    
    int main()
    {
        setlocale(0, "");
        int a, b;
        cout << "Vvedite pervoe chislo: ";
        cin >> a;
        cout << "Vvedite vtoroe chislo: ";
        cin >> b;
        int c, d, e, f, h;
        cout << "Vvedite gelaemuy operaciu: ";
        cin >> c, d, e, f;
        if (c)
        {
            h = a + b;
        }
        else
        {
            if (d)
            {
                h = a - b;
            }
            else
            {
                if (e)
                {
                    h = a * b;
                }
                else
                {
                    if (f)
                    {
                        h = a / b;
                    }
                }
            }
        }
        cout << "Rezultat: " << h << endl;
        return 0;
    }

    jkhne4pijgberg, 29 Апреля 2014

    Комментарии (41)
  9. C++ / Говнокод #15830

    +90

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    const struct TExceptionSafety {
                TQueue& _queue;
                ::std::condition_variable& _pushToQueue;
                ~TExceptionSafety(){
                    if(!this->_queue.empty())
                        this->_pushToQueue.notify_one();
                }
            } exceptionSafety = {_queue, _pushToQueue};//Use BOOST_SCOPE_EXIT, Luke!

    laMer007, 23 Апреля 2014

    Комментарии (36)
  10. C++ / Говнокод #15829

    +66

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    int array[100];    
    //~=//=~
    for(i=0;i<100;++i)
    {   
        if(array[i] != 0) continue; 
        break;
    }

    Код ужасно упрощен, но смысл передан полностью. Как я такое написал хз.

    Rofl113, 23 Апреля 2014

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