1. 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) RSS

    • > std::auto_ptr<SomeType> data; //А где он инициализируется?...
      В дефолтном конструкторе NULL'ом.

      Про Single::Ton что-то недопонял где инициализируется object, и для чего нужен initObject()...
      Ответить
      • Що ви, таки, пrистаёте к человеку? Саrочка, що он, таки, к нему пrистаёт? Не видите, ему уже и так стыдно!
        Ответить
        • Да не тгожьте ви Сагочку, таки ему и без пгиставаний стыдно!
          Ответить
    • >//Мне стыдно.
      Шо ты натворил? Признавайся.
      Ответить
    • >Вколите мне каплю никотина
      Одна капля убивает лошадь, а сколько нужно, чтобы убить хомячка?
      Ответить
      • Одна капля. К.О.
        Ответить
        • зависит от хомяка
          Ответить
          • Ага, например виду Cricetus cricetus нужна 1 капля никотина, а Cricetus vkontaktus достаточно не лайкнуть аву.
            Ответить
    • >Только это смоет мой позор.
      Я не пробовал, но друзья рекомендуют Сэппуку \ Харакири
      Ответить
      • > Я не пробовал
        Попробуйте, потом сможете писать "сам проверял"...
        Ответить
        • Это если неудача постигнет. Но сами по себе ранения живота - самые тяжёлые и обычно приводят к гибели (на правах копетана).
          Ответить
          • Поэтому главное - сделать это правильно. Чтобы не было мучительно больно.
            Ответить

    Добавить комментарий