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

    +32.9

    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
    #include <stdlib.h>
    
    ...
    
    class CAbstractControl
    {
    	...
    };
    
    class CWindow
    {
    	...	
    };
    
    class CButton: public CAbstractControl
    {
    	...
    };
    
    class CLabel: public CAbstractControl
    {
    	...
    };
    
    ...
    
    bool operator+(CWindow& win, CAbstractControl& Control)
    {
    	return win.AddControl(Control);
    };
    
    ...
    
    void main()
    {
    	CWindow& w=new CWindow(10,10,300,300,"Mail Messanger v11.0");
    	CAbstractControl& b1=new CButton(270,280,300,300,"OK");
    	...
    	CAbstractControl& l1=new CLabel(10,10,"Mail:");
    	...
    	if(!(w+b1))abort();
    	if(!(w+b2))abort();
    	...
    };

    Программа делает аборт();
    :D

    Запостил: Говногость, 19 Августа 2009

    Комментарии (20) RSS

    • Говнокод это код который рабоатет через анус, а не код в котором вы ошибку допустили
      Ответить
      • Частным случаем Говнокода является код, в котором ссылки инициализируются указателями на куче.
        Я вообще не понял как это компилируется.
        Ответить
        • Кстати, да. Сдесь должно быть:
          CWindow& w=*new CWindow(10,10,300,300,"Mail Messanger v11.0");
          Ответить
    • Типичный случай - говноперегрузка операции просто чтобы использовать пикантную возможность языка
      Ответить
    • Очень необычная (говно)реализация виджетов. Надо было еще чтобы operator+ не bool возвращал, а ccылку на *this.
      Тогда бы можно было длинные арифметические выражения с контролами строить.
      Ответить
      • w+b1+b2+b3...; :D
        Я такое в какой-то либе видел...
        Ответить
        • По смыслу здесь должен быть += , а не +
          Ответить
          • Не ломай мне мозг. Паскаль - рулит. Это из-за таких возможностей в языке, можно получать такой говнокод.
            Ответить
          • Тогда уж лучше <<.
            Ответить
    • Сначало забереминили(); , а потом аборт();
      Ответить
    • Вполне нормальный код. В Turbo Vision данный приём очень красиво выглядит:

      TMenuBar *TMyApp::initMenuBar(TRect r)
      {
      r.b.y = r.a.y + 1; // set bottom line 1 line below top line

      return new TMenuBar( r,
      *new TSubMenu( "~F~ile", kbAltF )+
      *new TMenuItem( "~O~pen", cmMyFileOpen, kbF3, hcNoContext, "F3" )+
      *new TMenuItem( "~N~ew", cmMyNewWin, kbF4, hcNoContext, "F4" )+
      newLine()+
      *new TMenuItem( "E~x~it", cmQuit, cmQuit, hcNoContext, "Alt-X" )+
      *new TSubMenu( "~W~indow", kbAltW )+
      *new TMenuItem( "~N~ext", cmNext, kbF6, hcNoContext, "F6" )+
      *new TMenuItem( "~Z~oom", cmZoom, kbF5, hcNoContext, "F5" )
      );
      }

      Учись, студент.
      Ответить
      • как всё запущено...
        Ответить
      • Убей себя.
        В данном коде оператор возвращает bool.
        А ГовноVision ещё не пример для подражания.
        Ответить
        • я вижу, что bool. афтар на правильном пути - скоро он поймёт, что надо возвращать CWindow&.

          на TurboVison не надо гнать. из твоего комментария я вижу, что подросло поколение школоты, которое пороху не нюхало. иди лучше на PHP пиши.
          Ответить
          • Turbo Vision. Имеется ввиду Паскаль? Если да, то разве там можно переопределить оператор +?
            Ответить
            • имеется в виду C++ реализация http://tvision.sourceforge.net/
              Ответить
              • Понятно. Но помоему + для этого всё-же не очень подходит... Как-то не крассиво. Хотя в этом что-то есть...
                Ответить
                • Конечно не подходит.
                  Смысл сложения в том, что части становятся одним целым. А здесь окно и контрол остаются отдельными сущностями, просто между ними устанавливается отношение.
                  Ответить
    • А че заминусовано? Явно же говнокод?
      Ответить

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