- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
class CRenderWindow
{
public:
/***/
bool IsWindow();
/***/
};
class CWindow : public CRenderWindow
{
/***/
};
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+20
class CRenderWindow
{
public:
/***/
bool IsWindow();
/***/
};
class CWindow : public CRenderWindow
{
/***/
};
Код для работы с окнами. Лишнее я убрал (весь код занимает больше 500 строк).
О чем думал человек, который это проектировал? О_о
+20
#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
+20
#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?
+20
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;
};
Один из тысячи сгенерированных классов.
+20
#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 фильтруют.
+20
//Вколите мне каплю никотина, а когда меня разорвет - сожгите ошметки напалмом.
//Только это смоет мой позор.
//Примерно так у меня выглядит вся обработка исключений:
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; }
};
//Мне стыдно.
+20
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];
};
+20
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));
}
Скорее всего, этот код вам покажется странным, поэтому я его выкладываю. Хотя я его говнокодом не считаю и он мне даже нравится.
+20
// заполнение массива случайными числами
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.
+20
У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
У МЕНЯ БОЛЬШОЙ ХУЙ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!