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

    +5

    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
    struct A {
      int a;
      virtual ~A() {}
    };
    struct B: public A {
      int b;
      B(int _b):b(_b){}
      virtual ~B() {}
    };
    A func(){return A();}
     
    int main(int argc, char* argv[])
    {
      A* a = new B(2);  
      *a = func();
      a->a = 5;
      B *b = dynamic_cast<B*>(a);
      std::cout << b->b << "\t" << b->a;
      return 0;
    }

    Меня попросили ответить что выведет на экран.

    laMer007, 29 Мая 2014

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

    +11

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    for (_i = 1;_i <= int(strlen(Query10->FieldValue("pattern").c_str()));_i++) {
        // ...
    }
    
    if (strlen(Query10->FieldValue("pattern_before").c_str()) == strlen(Query10->FieldValue("pattern_short").c_str())) {
        // ...
    }

    Nuff said.

    bormand, 29 Мая 2014

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

    +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
    template<typename T, typename T1>
    	class TSwitch
    	{
    		private:
    			std::function<T1(T)> _functionSwitch;
    			std::function<void(T)> _defaultFunction;
    			std::map<T1, std::function<void(T)> > _map;
    		private:
    			IActorPtr _protocol;
    			IActorPtr _port;
    			IActorPtr _listParam;
    			IActorPtr _managerData;
    
    		public:
    		TSwitch(std::function<T1(T)> functionSwitch,std::map<T1, std::function<void(T)> > mapSwitch):_functionSwitch(functionSwitch)
    																									,_defaultFunction([](T value){std::cout<<"no way";})
    																									,_map(mapSwitch){}
    		TSwitch(std::function<T1(T)> functionSwitch, std::function<void(T)> defaultValue,std::map<T1, std::function<void(T)> > mapSwitch):_functionSwitch(functionSwitch)
    																																		,_defaultFunction(defaultValue)																																,_map(mapSwitch){}
    		virtual ~TSwitch(){}
    		public:
    			void switches(T value)
    			{
    				auto it=_map.find(_functionSwitch(value));
    				if (it==_map.end()) {_defaultFunction(value); return;}
    				it->second(value);
    			}
    	};

    Вот такая замена switch. Отстойно не правда-ли?

    IKing, 29 Мая 2014

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

    +5

    1. 1
    2. 2
    3. 3
    4. 4
    //Так я легко "девушку" найду
    If(user.usingOS =="linux" && user.female=true){
    user.Подкатить();
    }

    Решил выпендриться, и сам наговнокодил

    joker, 28 Мая 2014

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

    +16

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    std::string response;
    ...
    char* result = new char[response.size() + 1];
    memcpy(&result[0], &response.c_str()[0], response.size());
    result[response.size()] = 0;
    return result;

    Сам метод возвращает char * (при этом никто не запрещал использовать непосредственно std::string).

    ЗЫ жаль что весь проект запостить нельзя. Он весь достоин.

    h4tr3d, 27 Мая 2014

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

    +17

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    io_service::strand strand_one(service), strand_two(service);
    for (int i = 0; i < 5; ++i)
        service.post(strand_one.wrap(boost::bind(func, i)));
    for (int i = 5; i < 10; ++i)
        service.post(strand_two.wrap(boost::bind(func, i)));

    Пример из книги Boost.Asio C++ Network Programming.

    In the preceding code, we made sure that the first five and the last five were serialized namely, "func called, i = 0" is called before "func called, i = 1", which is called before "func called, i = 2", and so on. The same goes for "func called, i = 5", which is called before "func called, i = 6", and "func called, i = 6" is called before "func called, i = 7", and so on.

    "А вот хуй тебе!", - сказал четырёхъядерный процессор, и выполнил коллбеки внутри strand'ов в случайном порядке.

    bormand, 25 Мая 2014

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

    +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
    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
    97. 97
    QString Factory::lifeEqual(WidgetEnum::SearchWidgetSet param) {
        switch (param) {
        case WidgetEnum::station:
            return "Станция";
        case WidgetEnum::water_area:
            return "Акватория";
        case WidgetEnum::station_coordinates:
            return "Координаты станции";
        case WidgetEnum::volume_of_filtered_water:
            return "Объем отфильтрованной воды";
        case WidgetEnum::chlorophyll_a_concentration:
            return "Концентрация хлорофила а";
        case WidgetEnum::chlorophyll_b_concentration:
            return "Концентрация хлорофила b";
        case WidgetEnum::chlorophyll_c_concentration:
            return "Концентрация хлорофила c";
        case WidgetEnum::A665k:
            return "A(665k";
        case WidgetEnum::pigment_index:
            return "Индекс пигмента";
        case WidgetEnum::pheopigments:
            return "Феопигменты";
        case WidgetEnum::upholding_sample_time:
            return "Время выдержки образца";
        case WidgetEnum::concetrated_sample_volume:
            return "Объемная концентрация образца";
        case WidgetEnum::cameras_viewed_number:
            return "Качество камеры";
        case WidgetEnum::total:
            return "Общая численость";
        case WidgetEnum::total_species:
            return "Число видов в пробе";
        case WidgetEnum::total_biomass:
            return "Общая биомасса";
        case WidgetEnum::total_percent:
            return "Итоговый процент";
        case WidgetEnum::biomass_percent:
            return "Процент биомасс";
        case WidgetEnum::percentage_of_total:
            return  "Процент от общего числа";
        case WidgetEnum::percentage_of_the_total_biomass:
            return "Процент от общего числа биомассы";
        case WidgetEnum::number:
            return "Номер";
        case WidgetEnum::biomass:
            return "Биомасса";
        case WidgetEnum::total_species_in_group:
            return "Всего видов в группе";
        case WidgetEnum::name:
            return "Название";
        case WidgetEnum::name_alt:
            return "Альтернативное название";
        case WidgetEnum::name_rus:
            return "Русское название";
        case WidgetEnum::fishing_gear:
            return "Рыболовный аппарат";
        case WidgetEnum::assessment_of_zooplankton:
            return "Оценка зоопланктона";
        case WidgetEnum::date:
            return "Дата";
        case WidgetEnum::Station_water_area:
            return "";
        case WidgetEnum::groupsOfPh_name:
            return "Название группы";
        case WidgetEnum::groups:
            return "Вид";
        case WidgetEnum::error:
            return "errorA";
        case WidgetEnum::chlorinity:
            return "chlorinity";
        case WidgetEnum::density:
            return "density";
        case WidgetEnum::volume:
            return "volume";
        case WidgetEnum::o2_mg_l:
            return "o2_mg_l";
        case WidgetEnum::o2_ml_l:
            return "o2_ml_l";
        case WidgetEnum::bod5:
            return "bod5";
        case WidgetEnum::ph:
            return "ph";
        case WidgetEnum::alk:
            return "alk";
        case WidgetEnum::no2:
            return "no2";
        case WidgetEnum::no3:
            return "no3";
        case WidgetEnum::total_n:
            return "total_n";
        case WidgetEnum::po4:
            return "po4";
        case WidgetEnum::total_p:
            return "total_p";
        case WidgetEnum::si:
            return "si";
    And etc.....

    В таком духе имеется строк 300, и если бы выход здравого смысла из спячки и наличие базы данных, 50 строчек которыми все это стало, с течением времени могло бы превратиться в 1000 строк, если не больше.
    И хоть это банальный гавногод, жалко трудов и времени на него затраченных. А так хоть канет в бездне говногода, а не в бездне моего винта.

    smith599, 25 Мая 2014

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

    +17

    1. 1
    MagicClass::getInstance().getFooFactory().createFoo().killMePlease();

    http://habrahabr.ru/post/222007/
    А вообще "Внедрение зависимостей в C++ через контейнеры" - та ещё традиционная специальная олимпиада крестовиков.

    LispGovno, 20 Мая 2014

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

    +11

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    int FCEUI_SetCheat(....)
    {
      ...
      if((t=(char *)realloc(next->name,strlen(name+1))))
      ...
    }

    А пасиму оно на 2 байта меньше выделяет, насяльника?

    http://www.viva64.com/ru/examples/V518/

    gost, 19 Мая 2014

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

    +15

    1. 1
    2. 2
    3. 3
    int main() {
    //new int;
    FreeConsole();

    LispGovno, 19 Мая 2014

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