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

    +73.7

    1. 1
    2. 2
    3. 3
    #include <math.h>
     ...
    result = (thisCos ? cos : sin)(3.140);

    Знакомый программист прислал из своего проекта.

    Говногость, 10 Ноября 2009

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

    +65.9

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    //какой-то .h-файл
    namespace Error {
    	struct Put_error{
    		const char * Message;
    		Put_error(const char * e) { Message = e; }
    	};
    ...
    
    //в каком-то методе в другом файле
    	  string msg = "Error: cannot open input file " + string(fileInputName) + "\n";
    	  throw Error::Put_error(msg.c_str());

    Lexey, 03 Ноября 2009

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

    +69.8

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    vector<int> :: iterator itBegins = array.begin(); 
    vector<int> :: iterator itEnds = array.end();
    
    while(itBegins != itEnds)
    {
             pVec.pop_back();
             it++;
    }

    Сей артефакт остался в коде ввиду лености переписывать его в 100 файлах сразу после удаления того, ради чего собственно затевался while(!pVec.empty()) ... прямо скажем - отлов ЭТОГО занял немало времени и нервов... тк на первый взгляд оно должно... а что ты видишь в этом коде, %юзернейм% ?

    (исправленная версия XD )

    Zeks, 02 Ноября 2009

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

    +48.5

    1. 1
    2. 2
    3. 3
    4. 4
    while(!pVec.empty())
    {
             pVec.pop_back();
    }

    Сей артефакт остался в коде ввиду лености переписывать его в 100 файлах сразу после удаления того, ради чего собственно затевался while(!pVec.empty()) ... прямо скажем - отлов ЭТОГО занял немало времени и нервов... тк на первый взгляд оно должно... а что ты видишь в этом коде, %юзернейм% ?

    Zeks, 02 Ноября 2009

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

    +50.7

    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
    namespace inter {
        template<typename X>
        struct tplClass {
            private:
                X _priv;
            
            public:
                tplClass(const X _generator) {
                    this->_priv = _generator;
                    return;
                }
                
                tplClass(const tplClass<int>& _a) {
                    this->_priv = _a.get();
                    return;
                }
    
                const X get(void) const {
                    return this->_priv;
                }
        };
        
        
        template<typename X>        
        const tplClass<X> operator+(const tplClass<X>& _lha, const tplClass<X>& _rha) {
            return tplClass<X>(_lha.get()+_rha.get());
        }
    }
    
    int main(int argc, char* args[], char* envs[]) {
        tplClass<int> a(5);
        tplClass<double> b(3.1);
        tplClass<double> c = a + b;
        return 0;
    }

    1. Всё упрощено до невозможности. Описано только то, что необходимо для узрения говнокода.
    2. Несмотря на то, что решение существует в очень известной книжке, я напоролся на говнокод лично, пока программу писал. Искал несколько дней проблему... Ну да... Бывает...
    3. Говнокод заключается в том, что данный код не компилируется.

    P.S. Если видите, что где-то есть дыра, то говорите, возможно я опечатался (злобная администрация исправить не даст), возможно в данном коде плюг опущен, возможно дыра у меня в голове. Конструктивная критика приветствуется.

    P.P.S. Если вы решили просто написать, что (C++ == "говно") is true , то, пожалуйста, прошу вас как людей порядочных и воспитанных, имеющих совесть и ум, пройдите мимо. Если у вас нит ни ума, ни совести, ни порядочности, то можете писать про "естественную говнистость" C++, милости прошу.

    interested, 30 Октября 2009

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

    +66.8

    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
    // Найдено глубоко в продакшн-коде некоего транслятора:
    HRESULT hr = S_OK;
    try {
          hr = ParseSection(sourceTemplate, output, CS_IF);
    }
    CATCH_CG_EXCEPTION(this, hr)
    CATCH_CG_EXCEPTION_END
    
    // далее смотрим определения этих чудо-макросов
    #define CATCH_CG_EXCEPTION(gen, hr) \
    catch (CHierCGException* e)  { \
         (gen)->WriteExceptionMessage(e); \
         if (e->m_bContinue) { \
                if (e->m_useHRESULT) hr = e->m_hResult; else hr = E_FAIL; \
         } \
         delete e; \
         if (!(e->m_bContinue))
    
    #define CATCH_CG_EXCEPTION_END \
          throw; \
    }

    Исключительно говнистая обработка исключений :-)

    Orfest, 27 Октября 2009

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

    +68

    1. 1
    2. 2
    char *GetNumRenderedObjectsString() { char *mString = new char [128]; itoa (mNumRenderedObjects, mString, 10); return mString; };
    char *GetNumDiscardedObjectsString() { char *mString = new char [128]; itoa (mNumDiscardedObjects, mString, 10); return mString; };

    Отличная работа с памятью.

    benin, 25 Октября 2009

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

    +66.7

    1. 1
    2. 2
    mNewFrame->SetName (new char [MAX_TOKEN]);
    strcpy (mNewFrame->GetName(), mXFrame->Attribute("name"));

    Умелая работа со строками....

    benin, 25 Октября 2009

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

    +56.3

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    bool a,b;
    
    ...
    
    if(a>b)
    {
    ...

    Увидел в одной либе... Си++ странный язык. Паскаль проще...

    1)Скомпилируеться ли?
    2)Что это значит?

    Говногость, 24 Октября 2009

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

    +61.8

    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
    const int size=8;
    
    class Bin
    {
    public:
    	Bin();
    private:
    	char first[size];
    	char second[size];
    };
    
    Bin::Bin()
    {
    	for (int s=0;s<=size;s++, first[s]='0');
    }

    Вот вам смешно? А я пару часов думал почему при заполнении одного вектора меняется другой...

    meriados, 23 Октября 2009

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