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

    +158

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    std::string get(const std::string& name) {
          NamedPropertyMap::iterator it = properties.find(name);
          if (it == properties.end())
            return false;
    
          std::string ret;
          it->second->Get(ret);
          return ret;
        }

    return false; компилится на ура в VS2008

    Aleskey, 30 Марта 2011

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

    +159

    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
    m_hSemaphore		= CreateSemaphore( NULL, 1, 1, NULL );
    ....
    
    void CTestGUIDlg::OnBnClickedButtonStartStream()
    {
    	WaitForSingleObject(m_hSemaphore, INFINITE);
    	if(m_ThreadHandle)
    	{
    		AfxMessageBox("Stop running stream!", MB_ICONEXCLAMATION);
    		return;
    	};
    
    	m_ThreadHandle	= NULL;
    	m_StreamType	= 1;
    	m_ThreadHandle =					(HANDLE)_beginthreadex(NULL,
    										0,
    										streamProcedure,
    										static_cast<LPVOID>( this ),
    										0,
    										NULL);	
    
    	if(!m_ThreadHandle) 
    	{
    		m_StreamType	= 0;
    	}
    	UpdateButtons();
    	ReleaseSemaphore(m_hSemaphore, 1, NULL);
    }

    классика жанра

    Aleskey, 30 Марта 2011

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

    +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
    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
    class SomeClass
    {
    public:
    	__declspec(dllexport) SomeClass(UINT i_Width, UINT i_Height, UINT i_Lines, float i_Result, bool i_bAutoFill = false, и т.д. еще штук 5);
    	__declspec(dllexport) SomeClass::~SomeClass();
    
    	__declspec(dllexport) void setCallbackFunction(void	(*i_pCallbackFunction)(SomeClass* i_pSomeClass)) { m_pCallbackFunction = i_pCallbackFunction; };	
    	__declspec(dllexport) bool isFinished() { return m_bIsFinished; };
    	__declspec(dllexport) void clear() { m_ResultData.clear(); };
    	__declspec(dllexport) bool save(const char* i_sFilename);
    
    	...
    
    private:	
    	bool createThread();
    	void initWork();	
    	void loopWork();
    	void stepWork();
    	void exitWork();
    
    	static UINT WINAPI workProc(LPVOID lpContext);
    
    	inline bool someInlineFunction(UINT i_Index);
    	...
    	
    private:
    	HANDLE				m_ThreadHandle;
    	bool				m_bIsFinished;
    	bool				m_bThreadStopped;
    	bool				m_bThreadClosed;
    	vector<SomeType>	m_a...; 
    	string				m_sFilename;
    	
    	void				(*m_pCallbackFunction)(SomeClass* i_pSomeClass);
    	
    	...
    };

    Это краткий пересказ того, что шло вместе с DLL, только длиннее и с комментариями к каждой строке и доксигеновской докой!

    Aleskey, 30 Марта 2011

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

    +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
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    /////////////////////////////////////////////////////////////////////////////
    #define TWAIT(_WAIT_EXPR_, _TIMEOUT_)	TWAIT_EX(_WAIT_EXPR_, _TIMEOUT_, 0)
    #define TWAIT_(_WAIT_EXPR_, _TIMEOUT_)	TWAIT_EX_(_WAIT_EXPR_, _TIMEOUT_, 0)
    /////////////////////////////////////////////////////////////////////////////
    #define TWAIT_DECL_VARS														\
    	DWORD TWAIT_START = GetTickCount();										\
    	bool TWAIT_RET = true;													
    /////////////////////////////////////////////////////////////////////////////
    #define TWAIT_EX(_WAIT_EXPR_, _TIMEOUT_, _ABORT_)							\
    	DWORD TWAIT_START = GetTickCount();										\
    	bool TWAIT_RET = true;													\
    	do {ProcessMessage(1);													\
    		TWAIT_RET = GetTickCount() - TWAIT_START < (DWORD)(_TIMEOUT_);		\
    		if( !TWAIT_RET ) break;												\
    		if( _ABORT_ != 0 ) { TWAIT_RET = false; break; }					\
    	} while( (_WAIT_EXPR_) == 0 );
    /////////////////////////////////////////////////////////////////////////////
    #define TWAIT_EX_(_WAIT_EXPR_, _TIMEOUT_, _ABORT_)							\
    	TWAIT_START = GetTickCount();											\
    	TWAIT_RET = true;														\
    	do {ProcessMessage(1);													\
    		TWAIT_RET = GetTickCount() - TWAIT_START < (DWORD)(_TIMEOUT_);		\
    		if( !TWAIT_RET ) break;												\
    		if( _ABORT_ != 0 ) { TWAIT_RET = false; break; }					\
    	} while( (_WAIT_EXPR_) == 0 );

    lambdas, functors... макрос - это наше все... а ProcessMessage(1) тоже радует.

    Aleskey, 30 Марта 2011

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

    +179

    1. 1
    2. 2
    3. 3
    4. 4
    ClassName::~ClassName()
        {
        memset( this, 0, sizeof( *this ) );
        }

    Написано коллегой из теплой страны. Случайно нашел в коде :)

    Mintel, 29 Марта 2011

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

    +174

    1. 1
    (addNewItem) ? (isVideoAudioAttached = true) : (isVideoAudioAttached = false);

    addNewItem и isVideoAudioAttached типа bool

    psl, 29 Марта 2011

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

    +172

    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
    CString convertInt2Str(int i_Number, int i_NumDigits)
    {
    	CString str = "";
    	for(int j=1; j<i_NumDigits; j++)
    	{
    		int digits = (int) pow((float) 10, j);
    		
    		if(i_Number<digits) str += "0";			
    	}	
    	CString num;
    	num.Format("%d", i_Number);
    	return str+num;
    }

    Adding leading zeros...

    Aleskey, 29 Марта 2011

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

    +162

    1. 1
    Speed = ini.GetInt("Speed" , Speed /(1 mm_s )) * (-1 mm_s);

    Скорость задается изначально как положительное число, но в ресчетах используется ее отрицательное значение.

    Aleskey, 29 Марта 2011

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

    +162

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    for (i = 0;i<n;i++)
        {
            for (j = 0;j<m;j++)
            {
                if (j=m)
                {
                    j = 0;
                    break;
                }
         }
    }

    Мастер! Без комментариев.

    P.S. Как это ни странно, автор предпочел остаться неизвестным :)

    DimX-6600, 28 Марта 2011

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

    +170

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    transaction::~transaction()
      {
        if (db_) {
          int rc = db_->execute(fcommit_ ? "COMMIT" : "ROLLBACK");
          if (rc != SQLITE_OK)
            throw database_error(*db_);
        }
      }

    (c) http://code.google.com/p/sqlite3pp/source/browse/trunk/sqlite3pp.cpp#486

    пожалуй, здесь нехватает картинки в стиле Nichtlustig с подписью "лемминг делает throw в деструкторе"

    iddqd, 27 Марта 2011

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