1. Лучший говнокод

    В номинации:
    За время:
  2. C++ / Говнокод #11814

    +20

    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
    class CRenderWindow
    {
    public:
    	/***/
    	bool IsWindow(); 
    	/***/
    };
    
    
    class CWindow : public CRenderWindow
    {
    	/***/
    };

    Код для работы с окнами. Лишнее я убрал (весь код занимает больше 500 строк).
    О чем думал человек, который это проектировал? О_о

    Artur, 21 Сентября 2012

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

    +20

    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
    #include <iostream>
    #include <string>
    #include <stdio.h>
    #include <time.h>
    
    int main()
    {
        time_t now = time(0);
        struct tm  tstruct = *localtime(&now);
    
        if (tstruct.tm_yday & 0xff) {   
           std::cout << "Pasony, segodnja den' programmista!"<< std::endl;
        } else {
            /*Syscall platform dependent implementation */
            //KeepCoding();
        }
        
    return 0;
    }

    ВНЕЗАПНО: http://tinyurl.com/c8kkxl8

    sayidandrtfm, 12 Сентября 2012

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

    +20

    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
    #include <iostream>
    #include <boost/noncopyable.hpp>
    #include <assert.h>
    
    using namespace std;
    
    class noncopyable
      {
       protected:
          noncopyable() {}
         virtual ~noncopyable() {}
       private:  // emphasize the following members are private
          noncopyable( const noncopyable& );
          virtual const noncopyable& operator=( const noncopyable& )final = delete;
      };
    
    class T: public noncopyable
    {
    public:
       const T& operator=( const T& ){return *this;}
    };
    
    int main() {
       T a;
       a=T();
       std::cout<<"kokoko"<<std::endl;
       return 0;
    }

    http://liveworkspace.org/code/15b5716e7618cc75a6881dfdd46982d5

    В чем смысл =delete, если запретить копировать T все равно не удается? Или это ошибка не стандарта, а реализации gcc?

    HaskellGovno, 20 Августа 2012

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

    +20

    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
    class NetGetPlmnListReply: public Message {
                    public:
                        virtual uint8_t command() const;
                        virtual uint8_t subcommand() const;
                        virtual RequestType requestType() const;
                        virtual bool deliver(IUnsolicitedReceiver *receiver);
    
                        static inline bool isTypeOf(Message *message) {
                            return message->command() == 8 && message->subcommand() == 4;
                        }
    
    
    
    std::string inspect() const;
    bool writeToStream(DataStream &stream);
    bool readFromStream(DataStream &stream);
    
    
    
            inline uint8_t count() const { return m_count; }
            inline void setCount(uint8_t count) { m_count = count; }
    
    
    
    
                class PlmnListItem {
                public:
    
    
    std::string inspect() const;
    bool writeToStream(DataStream &stream);
    bool readFromStream(DataStream &stream);
    
    
    
            enum Status {
    
                    Available = 2,
    
                    Current = 3,
    
                    Forbidden = 4,
    
            };
    
            inline Status status() const { return (Status) m_status; }
            inline void setStatus(Status status) { m_status = (uint8_t) status; }
    
    
    
    
    
            inline const std::vector<unsigned char> &plmn() const { return m_plmn; }
            inline void setPlmn(const std::vector<unsigned char> &plmn) { m_plmn = plmn; }
    
    
    private:
    
    
            uint8_t m_status;
    
    
    
            std::vector<unsigned char> m_plmn;
    
    
    
                };
    
    
            inline const std::vector<PlmnListItem> &plmnList() const { return m_plmnList; }
            inline void setPlmnList(const std::vector<PlmnListItem> &plmnList) { m_plmnList = plmnList; }
    
    
    
    private:
    
    
            uint8_t m_count;
    
    
    
            std::vector<PlmnListItem> m_plmnList;
    
    
    
                    };

    Один из тысячи сгенерированных классов.

    Grindars, 18 Августа 2012

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

    +20

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    #include <iostream>
    #include <string>
    
    int main(void)
    {
            char arr[] = "All's well that ends well";
            std::string s(arr, 3000);
            std::cout << s << std::endl;
    return(0);
    }

    Первое что пришло на ум, когда смотрел конструкторы string.
    Собирал: g++-4.5 -Wall -Wextra -pedantic-errors
    ideone.com и liveworkspace.org фильтруют.

    sayidandrtfm, 17 Августа 2012

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

    +20

    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
    //Вколите мне каплю никотина, а когда меня разорвет - сожгите ошметки напалмом.
    //Только это смоет мой позор.
    
    //Примерно так у меня выглядит вся обработка исключений:
    int main(int, char**) //или wWinMain, не важно
    {
    	try
    	{
    		//all stuff here
    	}
    	catch(std::exception e)
    	{
    		MessageBoxA(NULL, e.what(), "oops", MB_OK | MB_ICONERROR);
    	}
    	catch(...)
    	{
    		MessageBoxA(NULL, "Unknown error", "oops", MB_OK | MB_ICONERROR);
    	}
    	return 0;
    }
    
    //А еще у меня есть свой класс строки:
    class MyString
    {
    	wchar_t * data;
    	size_t length;
    	MyString(wchar_t * _data, size_t _length) : data(_data), length(_length) { }
    public:
    	//...
    	static MyString MyString::fromNumber(int num) 
    	{ //Грешен, определяю функции в заголовочном, хотя это и не тот случай.
    		wchar_t * data = new wchar_t[16];
    		HRESULT hr = StringCchPrintfW(data, 16, L"%d", num);
    		if(FAILED(hr))
    		{
    			throw std::exception("shit happend inside MyString::fromNumber(int)");
    		}
    		size_t len = 0;
    		hr = StringCchLengthW(data, 16, &len);
    		if(FAILED(hr))
    		{
    			throw std::exception("shit happend inside MyString::fromNumber(int)");
    		}
    		return MyString(data, len);
    	}
    };
    
    //А вкупе с обработкой исключений чуть выше...
    //Чуть не забыл про auto_ptr. Укорочено до сути.
    class Base
    {
    protected:
    	std::auto_ptr<SomeType> data; //А где он инициализируется?...
    public:
    	virtual ~Base() { }
    };
    class Deriv : public Base
    {
    public:
    	Deriv() : Base() 
    	{ 
    		data = std::auto_ptr<SomeType>(new SomeType(args)); //...а вот тут он инициализируется!
    	}
    	virtual ~Deriv() { }
    };
    
    //Паттерны!
    class Single
    {
    	Single(); //Без реализации.
    	template<typename T> Single(T); //Без реализации.
    	template<typename T1, typename T2> T1 operator = (T2); //Без реализации.
    	class Ton
    	{
    		//...
    	};
    	static Ton object;
    	static Ton initObject();
    public:
    	Ton & instance() { return object; }
    };
    
    
    //Мне стыдно.

    Xom94ok, 11 Августа 2012

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

    +20

    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
    92. 92
    93. 93
    94. 94
    95. 95
    96. 96
    class TCP1251ToUTF16StringConverter
    {
    public:
    	static WideChar convert(Char Source)
    	{
    		WideChar Result=static_cast<unsigned char>(Source);
    		const WideChar Russian_YO=static_cast<unsigned char>('Ё');
    		const WideChar Russian_yo=static_cast<unsigned char>('ё');
    		const WideChar RussianWide_YO=L'Ё';
    		const WideChar RussianWide_yo=L'ё';
    		const WideChar Russian_A=static_cast<unsigned char>('А');
    		const WideChar RussianWide_A=L'А';
    		const unsigned int AmountOfSymbols=0x40;
    		if(Result==Russian_YO)
    			return RussianWide_YO;
    		if(Result==Russian_yo)
    			return RussianWide_yo;
    		if(Result>=Russian_A&&Result<Russian_A+AmountOfSymbols)
    			return (Result-Russian_A+RussianWide_A);
    		return Result;
    	};
    	
    	static void convert(PwideChar UTF16StringDestination, PChar CP1251WinEngRusStringSource, const size_t TextLength)
    	{
    		assert(CP1251WinEngRusStringSource!=NULL);
    		size_t i=0;
    		for(;;)
    		{
    			if(i>=TextLength)
    				break;
    			assert(i<TextLength);
    			Char CP1251SourceChar=CP1251WinEngRusStringSource[i];
    			if(CP1251SourceChar=='\0')
    				break;
    			UTF16StringDestination[i]=convert(CP1251SourceChar);
    			++i;			
    		};
    		UTF16StringDestination[i]=L'\0';
    		assert(i<=TextLength);
    	};
    	
    	static std::wstring convert(const std::string& CP1251WinEngRusStringSource)
    	{
    		assert(CP1251WinEngRusStringSource.c_str()!=NULL);
    		std::wstring UTF16StringDestination;
    		std::transform(CP1251WinEngRusStringSource.begin(), CP1251WinEngRusStringSource.end(), std::inserter(UTF16StringDestination, UTF16StringDestination.end())/*std::back_inserter(UTF16StringDestination)*//*VC 6.0 compatible*/, makePointerToFunction(convertChar));
    		return UTF16StringDestination;
    	};
    	
    private:
    	static WideChar convertChar(char Source)
    	{
    		return convert(Source);
    	};
    };
    
    template<const size_t MaxAmountOfChar>
    class TCP1251ToUTF16StringInPlaceConverter
    {
    public:
    	TCP1251ToUTF16StringInPlaceConverter(PChar CP1251WinEngRusStringSource)
    	{
    		STATIC_ASSERT(MaxAmountOfChar>0, MaxAmountOfChar_must_be_above_zero);
    		TCP1251ToUTF16StringConverter::convert(&(_buffer[0]), CP1251WinEngRusStringSource, MaxAmountOfChar);
    	};
    	
    	TCP1251ToUTF16StringInPlaceConverter(PChar CP1251WinEngRusStringSource, const size_t TextLength)
    	{
    		STATIC_ASSERT(MaxAmountOfChar>0, MaxAmountOfChar_must_be_above_zero);
    		assert(TextLength<=MaxAmountOfChar);
    		TCP1251ToUTF16StringConverter::convert(&(_buffer[0]), CP1251WinEngRusStringSource, TextLength);
    	};
    	
    	void convert(PChar CP1251WinEngRusStringSource)
    	{
    		TCP1251ToUTF16StringConverter::convert(&(_buffer[0]), CP1251WinEngRusStringSource, MaxAmountOfChar);
    	};
    	
    	void convert(PChar CP1251WinEngRusStringSource, const size_t TextLength)
    	{
    		assert(TextLength<=MaxAmountOfChar);
    		TCP1251ToUTF16StringConverter::convert(&(_buffer[0]), CP1251WinEngRusStringSource, TextLength);
    	};
    	
    	PWideChar Get(void) const
    	{
    		return &(_buffer[0]);
    	};
    	
    	PwideChar Get(void)
    	{
    		return &(_buffer[0]);
    	};
    	
    	wideChar _buffer[MaxAmountOfChar+1];
    };

    USB, 02 Августа 2012

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

    +20

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    void File::open(string file, bool readAccess, bool writeAccess, bool append)
    {
    	Close();
    	(string&)Name=file;
    	const char* const modes[2][2][2]={{{null, "rb"}, {"wb", "w+b"}}, {{null, null}, {"ab", "a+b"}}};
    	if(modes[append][writeAccess][readAccess]==null) return InternalError("Создание файла с неверными параметрами!");
    	handle=fopen(Name.CStr(), modes[append][writeAccess][readAccess]);
    	if(handle==null) throw NotFoundException(string::Format("Файл <^> не найден!")(file));
    }

    Скорее всего, этот код вам покажется странным, поэтому я его выкладываю. Хотя я его говнокодом не считаю и он мне даже нравится.

    gammaker, 16 Июля 2012

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

    +20

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    // заполнение массива случайными числами
    template <typename T> void fill_array_with_random( T array[], size_t length ) {
    	for ( size_t i = 0; i < length; i++ ) { 
    		array[i] = rand();
    	}
    }

    Главный недостаток - K&R indent style.

    Fai, 26 Июня 2012

    Комментарии (61)
  11. Куча / Говнокод #10131

    +20

    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
    У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    uiopqwertyasd, 01 Мая 2012

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