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

    +163

    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
    class A
    {
    public:
    	~A();
    };
    
    void A::!A()
    {
    	//destructor
    }
    
    int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR commandLine, int)
    {
    	A* a = new A();
    	delete a;
    
    	return 0;
    }

    Компилируется и РАБОТАЕТ (заходит в этот "деструктор" при удалении объекта) под Visual C++ 2008.
    Перестаёт компилироваться после любого малейшего изменения (например, если убрать void перед реализацией "деструктора").
    КАК?!

    Kirinyale, 21 Августа 2010

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

    +166

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    до ревью:
    
    abcForm.Controls.FindControl<AbcDateControl>("MyDate").SetValue(DateTime.Parse(DateTime.Now.AddDays(1).ToString()));
    
    после
    
    abcForm.Controls.FindControl<AbcDateControl>("MyDate").SetValue(new DateTime(DateTime.Now.AddDays(1).ToString()));

    Всегда думал, что ревью улучшает код... Похоже народ хотел сделать вот это:

    abcForm.MyDate.SetValue(DateTime.Now.Add Days(1));

    :)

    pdk, 18 Августа 2010

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

    +161

    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
    float size = xLabelItemHeight + xLabelItem2Height + xLabelItem3Height + xLabelItem4Height + xTickItem_->tickSize() + tickGap();
    if(f1 * (powerAxis_->screenMin() - powerAxis_->screenMax()) < f2 * size)
    {
    	size = xLabelItemHeight + xLabelItem2Height + xLabelItem4Height + xTickItem_->tickSize() + tickGap();
    	if(f1 * (powerAxis_->screenMin() - powerAxis_->screenMax()) < f2 * size)
    	{
    		size = xLabelItemHeight + xLabelItem2Height + xTickItem_->tickSize() + tickGap();
    		if(f1 * (powerAxis_->screenMin() - powerAxis_->screenMax()) < f2 * size)
    		{
    			size = xLabelItemHeight + xTickItem_->tickSize() + tickGap();
    			if(f1 * (powerAxis_->screenMin() - powerAxis_->screenMax()) < f2 * size)
    			{
    // а дальше ничего не важно.

    Ну что, мои находки всё так же унылы?

    Altravert, 18 Августа 2010

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

    +168

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    CMakeString& operator<<(DWORD dwNum)
          {
             DWORD dwTemp = dwNum;
             int iCnt=1; // name lookup of 'iCnt' changed for new ISO 'for' scoping
             for( ; (dwTemp/=10) != 0; iCnt++ )
                ;
    
             m_str.resize(m_str.size() + iCnt);
             tsprintf(&(*m_str.begin()), _T("%s%u"), m_str.c_str(), dwNum);
    
             return *this;
          }

    Взято из http://www.codeproject.com/KB/IP/ftpclientclass.aspx

    absolut, 17 Августа 2010

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

    +153

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    void Text::redraw()
    {
    	// text_ имеет тип std::wstring
    	context_->getCanvas()->DrawString(text_.c_str(), -1, params.font(), rectangle, textStyle().stringFormatParams().stringFormat(), textStyle().brushParams().brush());
    }

    Совсем небольшое несильное говнецо. Просто был удивлен, что за долгое время это в первый раз седня спалил, хотя в проекте таких какашушелек >9000 использований. Соответственно из-за количества использований получается нормальный такой себе говнокод.

    Altravert, 16 Августа 2010

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

    +168

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    void ProgressBar::ProgressBarText::GetBackground()
    {
     ShowWindow(SW_HIDE);
     m_backbrush.~CBrushT();
     m_background.~CBitmapT();
     ShowWindow(SW_SHOWNORMAL);
    }

    Разбирался в классе контрола,чувака который его написал. Стало интересно что же он курил когда так называл метод и вызывал в нем деструкторы.

    tomas, 16 Августа 2010

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

    +156

    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
    while(myBot.loop) {
                    sleep(15);
                    myBot.connect(false);
    
                    while(myBot.loop) {
                            if(myBot.client->recv( 750000 )!=ConnNoError) {
                                   	break;
                            } else {
                                    hostent * record = gethostbyname(myBot.client->server().c_str());
                                   	if(record == NULL) {
                                            break;
                                    }
                           	}
                    }
    
                    myBot.disconnect();
           	}

    Бот на gloox. В строчках с 5 по 14 проверяется, не пропал ли линк, и пытается реконнектится, если, собственно, пропал.

    kainwinterheart, 14 Августа 2010

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

    +160

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    void log(string srv, string text) {
                    time_t rawtime; tm * ptm; time ( &rawtime ); ptm = gmtime ( &rawtime );
                    ofstream logfile(LOG, ios::app);
                    logfile << (ptm->tm_year+1900) << "-" << (ptm->tm_mon+1) << "-" << ptm->tm_mday << " "
                            << (ptm->tm_hour+MSD%24) << ":" << ptm->tm_min << ":" << ptm->tm_sec << endl << srv << ":\t" << text << endl << endl;
                    logfile.close();
            }

    Жистоке, брутальне логирование.

    kainwinterheart, 14 Августа 2010

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

    +155

    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
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    typedef unsigned char byte;
    
    byte masks[] =
    {
    	0,
    	0x1,
    	0x3,
    	0x7,
    	0xF,
    	0x1F,
    	0x3F,
    	0x7F,
    	0xFF
    };
    
    class RegionBool
    {
    public:
    	RegionBool(unsigned int width, unsigned int height) : w_(width), h_(height), arr_(0), lineLenBytes_(0)
    	{
    		double lineLenBytes = 0;	// байт на строку
    		byte strLenAddBits = static_cast<byte>(modf(static_cast<double>(w_) / 8, &lineLenBytes) * 8);
    		lineLenBytes_ = static_cast<long>(lineLenBytes) + ((strLenAddBits > 0) ? 1 : 0);
    
    		long bytes = lineLenBytes_ * h_;
    		arr_ = new byte[bytes];
    		memset(arr_, 0, bytes);
    	}
    
    	virtual ~RegionBool()
    	{
    		delete[] arr_;
    	}
    
    	inline byte* createLineMask(int x, int w)
    	{
    		// Hey! Attention, animal! Me is you. Listen: you can replace "masks[i]" with "(0xFF >> (8-i))". ХЗ, хав ит фастер.
    
    		byte* mask = new byte[lineLenBytes_];
    		memset(mask, 0, lineLenBytes_);
    
    		double skipBytes = 0;
    		byte startSkipBits = static_cast<byte>(modf(static_cast<double>(x) / 8, &skipBytes) * 8);
    		byte* pmask = mask + static_cast<int>(skipBytes);
    
    
    		byte before = (startSkipBits) ? (8 - startSkipBits) : 0;
    		if (before > w)
    			*pmask |= (masks[w] << startSkipBits);
    		else
    		{
    			if (before)
    				*pmask++ |= (masks[before] << startSkipBits);
    
    			double fillBytes = 0;
    			byte after = static_cast<byte>(modf(static_cast<double>(w - before) / 8, &fillBytes) * 8);
    			
    			if (fillBytes)
    			{
    				memset(pmask, 0xFF, static_cast<int>(fillBytes));
    				pmask += static_cast<int>(fillBytes);
    			}
    
    			if (after)
    				*pmask |= masks[after];
    		}
    
    		return mask;
    	}
    
    	virtual void OR(int x, int y, unsigned int w, unsigned int h)
    	{
    		byte* mask = createLineMask(x,w);
    
    		unsigned int lim = y + h;
    		byte* cur = arr_ + (y * lineLenBytes_);
    		for (unsigned int ty = y; ty < lim; ty++)
    		{
    			byte* m = mask;
    			for (int i = 0; i < lineLenBytes_; i++)
    				*cur++ |= *m++;
    		}
    		delete[] mask;
    	}
    
    private:
    	long lineLenBytes_;
    	unsigned int w_;
    	unsigned int h_;
    	unsigned char* arr_;
    };

    Простите, что много букв.
    Подобие региона, в котором пиксель представлен битом. Операции предполагаются только с прямоугольниками, подразумевается, что прямоугольники вмещаются в регион.
    Рассказывайте мне про меня))

    Altravert, 13 Августа 2010

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

    +142

    1. 1
    2. 2
    string a = "Hello World!";
    printf("%s", a);

    sergylens, 12 Августа 2010

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