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

    +18

    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
    class figure
    {
    //...
    };
    
    class triugolnik: public figure
    {
    //...
    };
    
    class kvadrat: public figure
    {
    //...
    };
    
    #define PAIR(f0, f1) std::make_tuple(std::type_index(typeid(f0)), std::type_index(typeid(f1)))
    
    int PloshadTrehFigur(const figure& f0, const figure& f1, const figure& f2);//forward declaration
    int PloshadDvuhFigur(const figure& f0, const figure& f1)
    {
      static const std::unordered_map<
        std::tuple<std::type_index, std::type_index>, std::function<int(const figure&, const figure&)> 
      > caller 
        {
           {PAIR(triugolnik, kvadrat), ploshadTriugolnikIKvadrat},
           {PAIR(kvadrat, triugolnik), lispGovno::flip(ploshadTriugolnikIKvadrat)},
           {PAIR(kvadrat, kvadrat), ploshadKvadratIKvadrat},
           {PAIR(triugolnik, triugolnik), ploshadTriugolnikITriugolnik}
        };
        const auto& f = caller.find(PAIR(f0, f1));
        assert(f!=caller.end());
        f(f0, f1);
    }
    
    #undef PAIR

    Наш ответ Чемберлену:
    http://govnokod.ru/13933
    lispGovno::flip - flip такой же как в хаскель из моей особой мегабиблиотеки победителя каждый день.
    Шах и мат господа присяжные засидатели. Мультиметоды в крестах есть и реализуются за 5 минут.
    В сишке аналогично. Все анскилябры залезли под кровати.
    Визитары размазанные по коду сосут и трудно поддерживаются.

    LispGovno, 20 Ноября 2013

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

    +12

    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
    #include <iostream>
    
    class base
    {
    	virtual void on_create() { }
    public:
    	int value;
    	float another_value;
    
    	void create()
    	{
    		static base test;
    		if(*reinterpret_cast<unsigned int *>(this) != *reinterpret_cast<unsigned int *>(&test))
    		{
    			std::cout << "please, do not override on_create()\n";
    		}
    		on_create();
    	}
    };
    
    class derived : public base
    {
    	virtual void on_create(){}
    };
    
    int main(int argc, char * argv[])
    {
    	std::cout << "base\n";
    	base b;
    	b.create();
    
    	std::cout << "derived\n";
    	derived d;
    	d.create();
    }

    Родилось в попытке ограничить переопределение виртуального метода.
    Работает, цуко.
    http://ideone.com/gUN9OA

    Xom94ok, 20 Ноября 2013

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

    +11

    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
    void run(std::map<QString, QString> params,QTextStream &os) const
    	{
    
    		static int ko=0;
    			ko++;
    			//r->method_="GET";
    			srand(time(0));// без этого числа будут одинаковые
    			QString  randomData="["+ (QString::number(ko))+" , "+ (QString::number(rand()%100))+ "]";
    			//int index= params["idChpu"].toInt();
    			std::list<QString> idsparams=getIdsDataRequest(params["dataRequestIds"]);
    			QString dataInIds="";
    			//for (auto idParam=idsparams.begin();idParam!=idsparams.end();idParam++)
    			for (const auto &idParam : idsparams)
    			{
    				qDebug()<<idParam;
    				auto kokoFunction=[](const std::function<QString()> & function){QString date; for(auto i=0 ;i<10;i++){date+= function()+QString(" , ");} ; return date;};
    				if (idParam==QString("id0"))
    				{dataInIds=dataInIds+QString("\"")+(idParam)+QString("\"")+QString(":[")+kokoFunction([](){return QString::number((ko++));})+QString::number((ko++))+QString("],");}
    				else
    				{dataInIds=dataInIds+QString("\"")+(idParam)+QString("\"")+QString(":[")+kokoFunction([](){return QString::number(rand()%100);})+QString::number(rand()%100)+QString("],");}
    			};
    			QString jsonData=QString("{")+
    						QString("\"idLastKey\":\"10\",")+dataInIds+QString("}");
    
    		qDebug()<<"TgetDataOnRequest run</h1>";
    		os << "HTTP/1.0 200 Ok\r\n"
    				"Content-Type: text/html; charset=\"windows-1251\"\r\n"
    				"\r\n"<<jsonData<<//randomData<<
    				"\n";
    
    //				  << QDateTime::currentDateTime().toString() << connectionSettings.getUrl()<<"\r\n"<<connectionSettings.getViewRequest()<<"\n";
    	}

    Надеюсь это временный код, но очень сомневаюсь.

    laMer007, 20 Ноября 2013

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

    +16

    1. 1
    2. 2
    const TReferenceToConstantStringSlice TFileTransfer::Beginer="<HTML><HEAD><FONT SIZE=6><A HREF='/'>Конфиденциально</A></FONT SIZE></HEAD><BODY><BR>";
    const TReferenceToConstantStringSlice TFileTransfer::Ender="</BODY></HTML>";

    Конфиденциально - это я сейчас стер.

    laMer007, 20 Ноября 2013

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

    +10

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    void operator()()
    	{
    		for (std::list<SmartPointer<FunctorTriggerParent > >::iterator it = _listFunctorOnTrigger.begin(); it != _listFunctorOnTrigger.end(); ++it)
    		{
    			(*it)->operator ()();
    		}
    	};

    laMer007, 18 Ноября 2013

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

    +80

    1. 1
    new

    TarasB, 13 Ноября 2013

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

    +18

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    std::string MetaInfo::SetField() {
      return m_value;
    }
    
    /* ... */
    
    std::string value = meta.SetValue();

    Йода-стайл. Переменную эту, хочешь установить ты.

    JeremyW, 08 Ноября 2013

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

    +13

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    int offset;
    
    /* где-то ниже */
    
    if (offset <= NULL)
    {
    }

    Антиматерия существует...

    JeremyW, 07 Ноября 2013

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

    +10

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    int ScriptArrow;
    ...
    // проверим а есть ли в натуре скрипт по этому указателю
    try
    {
        RunScript = (Script*)ScriptArrow;
        RunScript->Script.ArrVar.count();
    }
    catch (...)
    {
        RunScript = NULL;
    }

    Проверка, в натуре. Авторский комментарий сохранен :)

    bormand, 30 Октября 2013

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

    +22

    1. 1
    printf("Куда все подевались? Ни одного коммента за два дня...\n");

    bormand, 24 Октября 2013

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