1. Лучший говнокод

    В номинации:
    За время:
  2. Куча / Говнокод #5120

    +62

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    Уважаемые коллеги!
    Вот и наступает Новый Год!
    Пускай в новом году у каждого будет как можно меньше сбоев и багов!
    Пусть будет профессиональный рост идти по экспоненте! 
    А тем, кто уже профессионалы своего дела - не останавливаться на достигнутом!
    Желаю меньше говнокода в программах, пусть даже с бодуна и на больную голову будет писаться код!
    
    Всех с наступающим, хорошего настроения и веселого празднования!

    1_and_0, 31 Декабря 2010

    Комментарии (58)
  3. Java / Говнокод #4402

    +62

    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
    public int doEndTag() throws JspException {
            HttpServletRequest request = (HttpServletRequest) pageContext.getRequest();
            try {
             	String fieldValue = fdata;
        		String boolVal="false";
        		StringBuffer field_Value = new StringBuffer();
        		String indexString="";
        		int spaceIndex;
        	     
            	int slen = fieldValue.length();
        		int starti=0;
        		int endi= fsize;
        		if (fdata==null) {
        			 boolVal="true";
        			 field_Value.append("");
        		}
        		
        		if (fsize > slen ||  truncateDataSize > fdata.length() ) {
        		   boolVal="true";
        		   field_Value.append(fdata);
        		}
        		
        		if (truncateDataSize!=0  && fdata.length() > truncateDataSize ) {
        		  fieldValue=""; 	
        		  fieldValue = fdata.substring(starti,truncateDataSize);
        		  slen = fieldValue.length(); 
        		}
        		
        		while(boolVal=="false") {
        			indexString=  fieldValue.substring(starti,endi); 
        			spaceIndex = indexString.lastIndexOf(" ");
        			if (spaceIndex == -1) {
        				int initialLength = field_Value.length(); 
        				field_Value.append(fieldValue.substring(starti,endi));
        				// field_Value.append("<br>");
        				// MT-2238 start
        				int firstIndex = indexString.indexOf("<");
        				int lastIndex  = indexString.indexOf(">");
        				if(lastIndex<firstIndex) {
        					lastIndex  = indexString.indexOf(">",(lastIndex+1));
        				}
        				if(firstIndex >= 0 && lastIndex <= indexString.length() && lastIndex>firstIndex) {
        					if(!(indexString.substring(firstIndex+1,lastIndex).equalsIgnoreCase("br"))) {
        						if(lastIndex<=initialLength && indexString.endsWith(">")) {
        							field_Value.append("<br>");
        						}else {
        							field_Value.insert((initialLength+(lastIndex+1)),"<br>");
        						}
        					}
        				}
        				//in case no HTML tags
        				if(!checkInTag(false, field_Value.toString()) 
        						&& firstIndex==-1 && lastIndex==-1
        				) {
        					// add BR tag
        					field_Value.append("<br>");
        				}
        				// MT-2238 end
        			} else {
        				field_Value.append(fieldValue.substring(starti,starti + spaceIndex));
        				endi = starti + spaceIndex + 1;  
            			if(forceWrap == 1){
                			field_Value.append("<br>");
            			} else{
            				field_Value.append(" ");
            			}
        			}
        			starti = endi;
        			if((endi + fsize) > slen) {
        			   endi = slen - endi;
        			   field_Value.append(fieldValue.substring(starti,starti + endi));
        			   boolVal="true";
        			} else {
        				endi = endi + fsize;
        			}
        		}
        		
        		if (truncateDataSize!=0  && fdata.length() > truncateDataSize && singleLine==false) {
        		   field_Value.append("...");
        		}
        		
        		if (singleLine== true ) {
    	    		 if (fsize<fdata.length())	
    	    		 {	
    	    		  field_Value.delete(0,field_Value.length());		
    	    		  field_Value.append(fieldValue.substring(0,fsize));
    	    		  field_Value.append("...");
    	    		 } 
        		}
        		pageContext.getOut().write(field_Value.toString());
            } catch (Exception e) {
            	log.error(" Exception in image tag ",e);
            }
            return EVAL_PAGE;
        }

    Найдено в кастомном теге нашева прилаженийа. Писано паходу интусами %) ы

    Вся соль в строке (#29):
    while(boolVal=="false")

    И что самое интересное.. Оно работает!! :DDD ы

    А работает как я выяснил изза 'smart' части java %)) так как boolVal инитиализируется в этом же методе, то boolVal = "false" и "false" это 1 и тот же объект %) паэтаму и проходит сравнение. Т.е. java подменяет "false" во всех местах на адин и тот же объект %) но если бы "false" пришёл снаружи, то всё.. это другой объект %)

    ппц, я когда увидел долго бился головой ап стенку %)) в папытках понять, почему оно работает %))
    ксати я точно не уверен, но помойму если в настройках компилятора покапаться, то думаю можно сделать так чтобы каждой объявление "false" было новым объектом (или нельзя? О_о хотя ясно, что это бесмыслено), тогда работать не будит %) ы

    Pepper-X, 20 Октября 2010

    Комментарии (17)
  4. Java / Говнокод #2542

    +62

    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
    public class SendProtocol
    {
            public static String SESSIONCLOSED = "SESSIONCLOSED";
            public static String MSG = "MSG";
            public static String LOGIN = "LOGIN";
            public static String LOGINRESULT = "LOGINRESULT";
            public static String JOINROOM = "JOINROOM";
            public static String JOINROOMRESULT = "JOINROOMRESULT";
            public static String LEFTROOM = "LEFTROOM";     
            public static String JOINTABLERESULT = "JOINTABLERESULT";
            public static String JOINTABLE = "JOINTABLE";
            public static String LEFTTABLE = "LEFTABLE";
            public static String INVITE = "INVITE";
            public static String INVITERESULT = "INVITERESULT";
            public static String REPLYINVITEPLAY = "REPLYINVITEPLAY";
            public static String DEALCARD = "DEALCARD";
            public static String GETCARD = "GETCARD";
            public static String TAKECARD = "TAKECARD";     
            public static String DROPPHOM = "DROPPHOM";
            public static String PLAYCARD = "PLAYCARD";
            // Biến tạo phòng chơi
            public static String CREATEROOM = "CREATEROOM";
            public static String CREATETABLE = "CREATETABLE";
            public static String ADDPLAYERTOPLAYTABLE = "ADDPLAYERTOPLAYTABLE";
            //
            public static String CHANGEVIEW = "CHANGEVIEW";
            public static String CREATEPLAYER = "CREATEPLAYER";
            public static final String TABLESTATUS = "TABLESTATUS";
    }

    http://code.google.com/p/phom-javagame/source/browse/trunk/src/com/bitjsc/phom/server/SendProtocol.java

    danilissimus, 04 Февраля 2010

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

    +61.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
    //Обьявление класса в хедере с последующей реализацией:
    template<class TConstructStrategy>
    class TClass
    {
    public:
    	TConstructStrategy __ctor;
                      //...Прочие методы...
    };
    
    //...Реализация прочих методов класса...
    
    //================================================================
    
    //Конструктор с переменным числом параметров, типа функтор:
    //Тоесть обьявлено где-то в коде проекта и передаётся, как параметр при конструировании.
    typedef void TConstract(int a);
    template<>
    TClass<TConstract>::TClass(int a)
    {
    	//doing...
    };
    
    int main(int argc, char* argv[])
    {
              //...
              TClass<TConstract> A(5);
              //...
    }

    Это говнокод, но не результат работы над проектом, а результат насмешек над компилятором MSVC 6.0.
    Основано на обявлении типа-функции:
    typedef void TConstract(int a);, но тк конструктор не функция - используется внутренее имя конструктора MSVC6.0:
    void __ctor(void);, согласно которому он всё-таки функция.
    __dtor - "внутренее" имя деструктора, кстати.
    Спалить "секретное" имя обычно можно в сообщениях об ошибках c участием этих имён. При входе в конструктор/деструктор через отладчик под дизасемблером(наверное). В стеке вызовов отладчика(наверное). Наверное ещё как-нибудь, например проходом HEX редактора по экзешнику компилятора и прилижащим dll...
    Итак для обсуждения (хотя и не собираюсь это использовать):
    1)Как ещё, кроме странных пергрузок, представленного выше метода конструктора-функтора, и вызовов типа A.__ctor(); / A.__dtor() это можно использовать?
    2)Какие "скрытые" имена конструкторов/деструкторов у других компиляторов? Я пробовал в MSVC6.0. В MSVS 2008 при первом расмотрении "внутреннее" имя другое и сходу не палится.
    Для примера приведу метод с "обычным" функтором (на самом деле он не самый обычный):

    //Обьявление класса в хедере с последующей реализацией:
    template<class TStrategy>
    class TClass
    {
    public:
    TStrategy func;
    //...Прочие методы...
    };

    //...Реализация прочих методов класса...

    //================================================================

    //Функтор:
    //Тоесть обьявлено где-то в коде проекта и передаётся, как параметр при конструировании.
    typedef void TFunc(void);
    template<>
    void TClass<TFunc>::func(void)
    {
    //doing...
    };
    int main(int argc, char* argv[])
    {
    //...
    TClass<TFunc> A;
    A.func();
    //...
    };

    fake_guest, 05 Февраля 2010

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

    +61.9

    1. 1
    2. 2
    3. 3
    std::string strFullMapName;
    if ( strstr( _strMapFileName.c_str(), "Map/" ) != _strMapFileName.c_str() )
    	strFullMapName = "Map/";

    из одного очень дорогого проекта

    pushkoff, 03 Октября 2009

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

    +61.8

    1. 1
    2. 2
    CStringA * str = new CStringA; - создает и пашет на ура
    CStringA * str = (CStringA *)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(CStringA)); часов 5 назад так же пахало на ура, помылся в душе и ... бля мистика возвращает неверный указатель

    был мне задан такой вопрос =)

    tz-lom, 24 Января 2010

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

    +61.8

    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
    const int size=8;
    
    class Bin
    {
    public:
    	Bin();
    private:
    	char first[size];
    	char second[size];
    };
    
    Bin::Bin()
    {
    	for (int s=0;s<=size;s++, first[s]='0');
    }

    Вот вам смешно? А я пару часов думал почему при заполнении одного вектора меняется другой...

    meriados, 23 Октября 2009

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

    +61.8

    1. 1
    (*(((void*)*)(pData))=p;

    думал о чем-то постороннем)))

    AntiGluk, 09 Октября 2009

    Комментарии (31)
  10. PHP / Говнокод #1253

    +61.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
    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
    global $scan, $scan1, $scan2, $pri1, $pri2, $host, $i1, $hits;
    global $server1, $server2;
    global $item;
    global $use_1, $term_1, $trun1, $bop_1;
    global $use_2, $term_2, $trun2, $bop_2;
    global $use_3, $term_3, $trun3, $bop_3;
    global $use_4, $term_4, $trun4, $bop_4;
    global $use_5, $term_5, $trun5, $bop_5;
    $ver1=ord(substr(phpversion(),0,1))-48;
    $ver2=ord(substr(phpversion(),2,1))-48;
    $ver=$ver1*10+$ver2;
    #echo $ver;
    if ($ver>42)extract($_REQUEST);
    if ($format == "1.2.840.10003.5.109.10") {
    	$pri2=1;
    	$pri1=1;
    	$pxml=0;
    }
     
    if (($scan==tounicode("список"))||($scan1==tounicode("список"))||($scan2==tounicode("список")))
       {
            if (strlen($term_2)>0)
                 {
                    $term_1=$term_2;
                    $use_1=$use_2;
                 }
            if (strlen($term_3)>0)
                 {
                    $term_1=$term_3;
                    $use_1=$use_3;
                 }
            include("func.php");
            $target=$host[0];
            $field1="@attr 1=" . $use_1;
            $term1=$term_1;
            if (strlen($term1)==0)
    /*            {
                  echo "<title>z39.50</title><BODY bgcolor=FFFFE6 TEXT=000000 LINK=brown VLINK=brown topmargin=0 leftmargin=0 marginwidth=0 marginheight=0><center><table width=70% border=1 cellpadding=25 cellspacing=0><td valign=top><font face='arial,helvetica' size=6 color=#333333>Шлюз Z39.50</font><hr><font color=brown><p><b>Для просмотра списка введите, пожалуйста, первую букву поискового терма<p><br><a href='javascript:history.back()'><img src=back.gif border=0></A></td></table>";
                  exit;
                }  */
                  {
                    $term_1='0';
                    $term1=$term_1;
                  }
            $syntax="RUSMarc";
            $element="F";
            $number=15;
    ?>

    guest, 25 Июня 2009

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

    +61.3

    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
    bool SetVars()
    {
    	int i = 0;
    	int j = 0;
    
    	if (em == NULL)
    	{
    		Delay(0.001f);
    		return false;
    	};
    	
    	_end = em->end;
    	_max = em->max;
    	_min = em->min;
    	
                 //...

    В чем логика? Не могу понять...

    Говногость, 25 Января 2010

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