1. Си / Говнокод #2171

    +106.7

    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
    char *getUI_ID_AsString(MENU_ID menuId)
    {
        char *IdStr;
        	
    	if((menuId == VOLUME_ID) || (menuId == POPUPWIN_ID) || (menuId == YESNOWIN_ID) || (menuId == MAINMENU_ID) || (menuId == 
    		MODEMENU_ID) || (menuId == USBMODE_ID) || (menuId == SETTINGSMENU_ID) || (menuId == MENUPLAYMODE_ID) || (menuId == MENUEQ_ID) 
    		|| (menuId == MENUSETTING_ID) || (menuId == MENULOCK_ID) || (menuId == MENUPLAYSPEED_ID) || (menuId == MENUCONTRAST_ID) || (menuId == 
    		MENUBACKLIGHT_ID) || (menuId == MENULANGUAGE_ID) || (menuId == MENUSHUTDOWN_ID) || (menuId == MENUINFO_ID) || (menuId == 
    		MENUBEEP_ID) || (menuId == MENUFACTORYSET_ID) || (MENUUSEREQ_ID) || (menuId == SET_PREFERENCES_ID) || (menuId == 
    		MENUCONFIRM_RESET_ID) || (menuId == MENUCONFIRM_FORMAT_ID) || (menuId == MAINRECMENU_ID) || (menuId == RECSETMODE_ID) || 
    		(menuId == RECSETINPUT_ID) || (menuId == RECSETVAD_ID) || (menuId == RECSETAUTOSYNC_ID) || (menuId == NAVIGATION_ID) ||
    		(menuId == PROMPT_VOLUME_ID) || (menuId == MENUGPSAPPL_MAIN_ID) || (menuId == POWERON_CONNECTING_ID) || (menuId == 
    		HOMESCREEN_ID) || (menuId == RC_DOWNLOADING_ID) || (menuId == SCREEN_BRIGHTNESS_ID) || (menuId == ABOUT_ID) || (menuId == 
    		INSTMENU_ID) || (menuId == INST_ABOUT_ID) || (menuId == DISPL_ORIENT_ID) || (menuId == LINEOUT_ID) || (menuId == 
    		PRIVACY_MUTE_ID) || (menuId == TEST_INSTALL_ID) || (menuId == FACTORY_RESET_ID) || (menuId == CALL_DTMF_ID) ||	(menuId == 
    		NAVI_FILEMENU_ID) || (menuId == NAVI_CONFIRM_DEL_ID) || (menuId == NAVI_SELECTFOLDER_ID) || (menuId == LANG_SELECT_ID) ||
    		(menuId == DISPLAY_JPG_ID) || (menuId == DISPLAY_TEXT_ID) || (menuId == SET_DISPLAY_ID))
    	{
    	    IdStr = (char *) malloc(4);
        	strcpy(IdStr, " MENU");
    	}
    	else if( <тут примерно еще столько же условий> )
    		{
    		       IdStr = (char *) malloc(5);
    			   strcpy(IdStr, " PHONE");
    		}
    	else if( <тут примерно еще столько же условий> )
    		{
    		    strcpy(IdStr, " PBOOK");
    		}
    	else if( <тут примерно еще столько же условий> )
    		{
    		    IdStr = (char *) malloc(5);
    		    strcpy(IdStr, " MUSIC");
    		}
    	else if( <тут примерно еще столько же условий> )
    		{
    		    IdStr = (char *) malloc(3);
    		    strcpy(IdStr, " MSG");
    		}
    		
    		return IdStr;
    }

    Шедевр индусского говнокодирования. А потом с нас спрашивают, почему это у нас система нестабильно работает.
    switch, по ходу, они еще в школе не прошли, да и с математикой у них плоховато. А где-то память вообще выделять не надо - зачем?

    Запостил: Scrambler, 24 Ноября 2009

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

    • нисмешно
      на говнокоде пора раздел сделать быдлокод
      Ответить
      • По моему разумению, говнокод (ваш код - говно!) - это быдлокод. А тот, "на который без улыбки не взглянешь", это либо классная находка, изящество, либо изврат.
        Изврат получается в тех случаях, когда средства разработки ограничивают полет мысли:) Когда не получается втиснуть идею в узкие рамки.
        В любом случае, большинство представленных кусков кода под определение говнокода не попадают...
        Ответить
        • не улыбнулся - низачот. а смешной код может получиться даже при полной свободе полёта (и обычно он там и получается).

          p.s.
          мне кажется, что слоган говнокода исключает истинность твоего высказывания
          Ответить
          • Мне просто претит называть смешной код говнокодом.
            Funnycode, cunningcode — запросто, но, похоже, здесь имеется в виду то, что я называю извратами, когда можно сделать проще, но сделано через жопу. А вот когда сделано в лоб, тогда быдлокод, да?
            Ответить
            • когда делано непрошареными людьми и абакак - быдлокод,
              когда смешной лаг - говно
              Ответить
    • я сомневаюсь, что такоевообще наплодить можно, а тем более - в таком виде. автор поста сам его придумал? :)
      Ответить
      • Ты явно недооцениваешь индусов... это ужасные люди. Они легко могут наплодить еще и не такое... эх...
        Ответить
        • к сожалению, я работал с настоящими индусами равшанами и тд, не раз, но такого "юмора" у них не встречал
          слава богу, меня относительно недавно уберегло от этого "сотрудничества" в будущем, чему я теперь искренне рад
          и с нашими "индусами" я работал и работаю, но наши ребята куда более славные, это факт
          но всё-равно, смотря на это, как станиславский, сомневаюсь и говорю "не верю!"
          ну не бывает таких полоумных, не бы ва ет
          Ответить
          • Ёпт. Бывает. Сам года 3 назад такое делал. Как сейчас помню. o_0 Разве условия были записаны в одну строчку, но их было именно не меньше.
            Ответить
            • так это ты "индус" и двоечник, который ещё тогда не работал в сфере ит :D
              Ответить
    • Тут ещё памяти во всех местах выделено мало, а в одном месте вообще забыли выделить. Второе, скорее всего, приведёт к падению программы сразу, а от первого она ещё помучается :)
      Ответить
      • Программа, как ни странно падает довольно редко (система довольно большая) даже с ТАКИМ ужасом внутри
        Ответить
        • так значит, этот код вполне нормально работает, да? :)
          Ответить
          • Этот кусок кода вертится на некой железке... И она действительно работает и падает довольно редко.

            Там есть ещё такое:
            static char musicInfo[70] = {0};
            
            // ~~skip~~
            
            for(count =0; count < 70; count++)
            {
                    musicInfo[70] = '\0';
            }

            ... тоже Made in India (tm)
            Ответить
        • Ну так, индусам везёт, что оно вообще работает: malloc выравнивает выделенную память до некой константы, кратной двум (минимум восьмёрка...)

          В итоге "IdStr = (char *) malloc(5); strcpy(IdStr, " PHONE");" компьютер кушает и непоперхивается. Но боже упаси подобный код запустить на другой машине/ОС... Там уже как ляжет :)
          Ответить
      • кстати, реально, никто не обратил внимания сначала, что в некоторых ситуациях память под IdStr не выделяется и там, по ходу, мусор, а strcpy() всегда переполняет буффер в куче ) мне кажется, здесь баг куда позадорней, что-ли, чем ужасные ифы. суть не в том. мне интересно, как часто эта аппликуха падает, когда она использует технику mem-allo(size) - mem-copy(size + N) )) попробуй, блин, отлови такой баг )
        Ответить
        • >попробуй, блин, отлови такой баг
          Легко! Просто переписать говнокод. :)
          Ответить
          • тю ) я сказал "отловить", а не "пофиксить" )))
            Ответить
    • Ещё и не освобождают же...
      Ответить
      • очевидно, этой функции освобождать память и не нужно
        память освобождает код, вызвавший getUI_ID_AsString()
        Ответить

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