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

    В номинации:
    За время:
  2. PHP / Говнокод #4600

    +156

    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
    index.php:
    <?php
    
    	define("TEMPLATE_FOLDER", "./templates/");
    
    	class Template
    	{
    		
    		public function view($template, $data)
    		{
    			foreach($data as $key => $variable)
    				$$key = $variable;
    			
    			require(TEMPLATE_FOLDER . $template . '.php');
    			
    			foreach($data as $key => $variable)
    				unset($$key);
    		}
    		
    	}
    	
    	$template = new Template();
    	
    	$data['test'] = array(1, 2, 3);
    	
    	$template->view('index', $data);
    	
    ?>
    
    templates/index.php:
    <html>
    	<body>
    		<?php foreach($test as $row): ?>
    			<?php echo $row ?><br/><br/>
    		<?php endforeach; ?>
    	</body>
    </html>

    Говно ли?

    TapTap, 12 Ноября 2010

    Комментарии (17)
  3. Perl / Говнокод #4592

    −122

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    sub generate_code {
    	my ($arrey_pos,$code);
    	my @arrey = ('a'..'q', 'C'..'O', '1'..'9', 'g'..'u', 'l'..'z', '9'..'1', 'H'..'W');
    
    	for (my $i = 0; $i < $_[0]; $i++) {
    		$arrey_pos = int(rand($#arrey));
    		$code .= $arrey[$arrey_pos];
    	}
    	$code;
    }

    Генерация кода.

    Arigato, 11 Ноября 2010

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

    +168

    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
    /*++
      прямое ли?
    --*/
    bool ModelCurve3D::IsStraight() const {
      return m_mathCurve ? m_mathCurve->IsStraight() : false;
    }
    
    /*++
      замкнутость
    --*/
    bool ModelCurve3D::IsClosed()  const
    {
      return m_mathCurve ? m_mathCurve->IsStraight() : false;
    }

    Замкнутый... ну знаешь, это типа как прямолинейный. И такое лежит годами. А как поправишь, еще может и регрессия случится. Ну как так можно?

    guest666, 06 Ноября 2010

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

    +77

    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
    ;
                    Scanner reader = new Scanner(System.in);
                    int razm = 0;
                    boolean flag = false;
    
                    int[] rez = new int[100];
                    for (int i = 0; i < 100; i++)
                             rez[i] = i;
    
                    do {
                            System.out.println("введите размерность матрицы");
                            razm = reader.nextInt();
    
                            for (int i = 0; i < 100; i++) {
                                    if (rez[i] == razm)
                                            flag = true;
                            }
    
                            System.out.println("размерность не является целочисленным типом,повторите ввод");
    
                    } while (flag == false);
    
                    double[][] matrix = new double[razm][razm];
    ;

    Студенческое изделие, блинННН.
    Я даже не знаю, как это прокомментировать....
    я не могу себе представить, КАК надо мыслить, чтоб такое учудить.
    Ну а , то, что сообщение про неправильный ввод выводится
    безотносительно к правильности введённого - это уже так, мелочи жизни.

    minixoid, 28 Октября 2010

    Комментарии (17)
  6. Python / Говнокод #4466

    −165

    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
    def getrows(c):
        return \
            sum( # суммируем по категориям
                map(
                    lambda category:
                        sum( # суммируем по itemid
                            map(
                                lambda itemidset:
                                    sum( # суммируем по itemstring
                                        map(
                                            lambda itemstring:
                                                map(
                                                    lambda info:
                                                        transaction(category, itemstring, info),
                                                    itemidset[itemstring].values()
                                                ),
                                            itemidset.keys()
                                        ),
                                    []),
                                c[category].values()
                            ),
                            []
                        ),
                    ("completedAuctions", "failedAuctions", "completedBidsBuyouts")
                ),
                []
            )

    Залез в свой старый скрипт, генерирующий отчеты, думал кое-что подправить...
    Увидел одну из функций (эту) и решил лучше забить тут что-то править хД

    Причины такого ужаса - наверно отсутствие явной типизации в питоне и средств рефакторинга (rename variable, extract method, ...) в "IDE"

    burdakovd, 27 Октября 2010

    Комментарии (17)
  7. JavaScript / Говнокод #4441

    +151

    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
    function msglist_scroll_change() {
    
    	var mailbox = Mailbox.Get();
    	if (!mailbox.mList.length && (mailbox.state == 2)) { if (splash) splash_off(); return; }
    	var scroll_height = document.getElementById("msglist_container_id").style.height;
    	var scroll_top = document.getElementById("msglist_container_id").scrollTop;
    	var delta = parseInt((parseInt(scroll_height) / mailbox.mListItemHeight) + 2);
    	
    	var first = parseInt((scroll_top / mailbox.mListItemHeight) - 1);
    	var last = parseInt(((parseInt(scroll_top) + parseInt(scroll_height)) / mailbox.mListItemHeight) + 1);
    	if (first < 0) first = 0;
    	if (last >= mailbox.mList.length) last = mailbox.mList.length - 1;
    	
    	// проверка на то, что в область видимости попало неподгруженное письмо
    	var needToLoad = 0;
    	for (var i = first; i <= last; i++) if (mailbox.mList[i].STATE == 0) needToLoad++;
    	if (!needToLoad) return; // если не надо
    
    	
    	var first = parseInt((scroll_top / mailbox.mListItemHeight) - 1 - delta);
    	var last = parseInt(((parseInt(scroll_top) + parseInt(scroll_height)) / mailbox.mListItemHeight) + 1 + delta);
    	if (first < 0) first = 0;
    	if (last >= mailbox.mList.length) last = mailbox.mList.length - 1;
    	
    	var messages_part = new Array();
    	var k = 0;
    	targetDiv = gebi("msglist_container_id");
    	inn = "";
    	for (var i = first; i <= last; i++) {
    		if (mailbox.mList[i].STATE == 0) {
    			messages_part[k] = mailbox.mList[i].ID;
    			k++;
    		}
    		tmpl_msg_loading(mailbox.mList[i].ID);
    	}
    	if (messages_part.length) ajax_get_folder_msg_list_info_part(mailbox.fId, messages_part, mailbox.recvMListInfoData, mailbox);
    	else heatFolders();
    }

    Зачем-то два раза определяют first и last...
    Может кто-нибудь объяснит?..

    istem, 25 Октября 2010

    Комментарии (17)
  8. PHP / Говнокод #4439

    +155

    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
    // Юзер просит завернуть в функцию и оптимизировать следующий кусок кода.
    // Статус 
    echo "<u>Статус<u>: "; 
    if ($ank['status']==0){echo 'Нет статуса!<br>';} 
    else if ($ank['status']==1){echo '<img src="'. $H . '/icons/status/'.$ank['status'].'.gif" />Думаю: '.$ank['status_text'].'<br>';} 
    else if ($ank['status']==2){echo '<img src="'. $H . '/icons/status/'.$ank['status'].'.gif" />Дела: '.$ank['status_text'].'<br>';} 
    else if ($ank['status']==3){echo '<img src="'. $H . '/icons/status/'.$ank['status'].'.gif" />Магазины: '.$ank['status_text'].'<br>';} 
    else if ($ank['status']==4){echo '<img src="'. $H . '/icons/status/'.$ank['status'].'.gif" />Печатаю: '.$ank['status_text'].'<br>';} 
    else if ($ank['status']==5){echo '<img src="'. $H . '/icons/status/'.$ank['status'].'.gif" />Вопрос: '.$ank['status_text'].'<br>';} 
    else if ($ank['status']==6){echo '<img src="'. $H . '/icons/status/'.$ank['status'].'.gif" />Сердитый: '.$ank['status_text'].'<br>';} 
    ........................
    else if ($ank['status']==30){echo '<img src="'. $H . '/icons/status/'.$ank['status'].'.gif" />Пью пиво: '.$ank['status_text'].'<br>';} 
    else if ($ank['status']==31){echo '<img src="'. $H . '/icons/status/'.$ank['status'].'.gif" />Слушаю музыка: '.$ank['status_text'].'<br>';} 
    else if ($ank['status']==32){echo '<img src="'. $H . '/icons/status/'.$ank['status'].'.gif" />Учеба: '.$ank['status_text'].'<br>';} 
    else if ($ank['status']==33){echo '<img src="'. $H . '/icons/status/'.$ank['status'].'.gif" />Работа: '.$ank['status_text'].'<br>';} 
    else if ($ank['status']==34){echo '<img src="'. $H . '/icons/status/'.$ank['status'].'.gif" />В туалете: '.$ank['status_text'].'<br>';} 
    // Статус
    
    
    
    // Сразу же постит "программист", который зарабатываем на своем деле
    
    function a($st,$t,$H){ 
    $s=range(0,34); 
    unset($s[0]); 
    $r=array('радость','дела','печаль и т.д.'); 
    if(!$s){ 
    echo 'нету статуса'; 
    }else{ 
    echo '<img src=""'. $H . '/icons/status/'.$st.'.gif">'.$r[$st].' '.$t.'<br/>'; 
    } 
    
    } 
    
    
    ########################## 
    a($ank['status'],$ank['text_status'],$H);
    
    
    
    // ну и мой варинат (для сравнения)
      function get_user_status($status_id) 
       { 
        
       $statuses = array 
          ( 
          0 => 'Нет', 
          1 => 'Думаю', 
    ...
          33 => 'Работа', 
          34 => 'В туалете' 
          ); 
    
       return $statuses[$status_id]; 
        
       }
    
    // использовать
    echo 'Статус : <img src="'. $H . '/icons/status/'.$ank['status'].'.gif" />'.get_user_status($ank['status']).': '.$ank['status_text'].'<br>';

    Без комментариев

    Morgan, 25 Октября 2010

    Комментарии (17)
  9. 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)
  10. Java / Говнокод #4279

    +144

    1. 1
    http://forums.sun.com/thread.jspa?threadID=5213426

    по ссылке длииииииииинный сплошь китайский код. Особенно красиво гипнотизироваться, крутя колесиком мышки вверх-вниз.

    каменный век в виртуальности, сколько ж можно?

    Lure Of Chaos, 18 Сентября 2010

    Комментарии (17)
  11. Куча / Говнокод #4265

    +143

    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
    uses graph, crt;
    var gd,gm,i:integer;
        x0,y0,x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,l,r:integer;
    procedure calculationx(r:integer);
    begin
      x1:=x0;
      x2:=x0+trunc(r*sin(36*pi/180));
      x3:=x0-trunc(r*cos(18*pi/180));
      x4:=x0+trunc(r*cos(18*pi/180));
      x5:=x0-trunc(r*sin(36*pi/180));
    end;
    procedure drow(x1,y1,x2,y2,x3,y3,x4,y4,x5,y5:integer);
    begin
      line(x1,y1,x2,y2);
      line(x2,y2,x3,y3);
      line(x3,y3,x4,y4);
      line(x4,y4,x5,y5);
      line(x5,y5,x1,y1);
    end;
    procedure stars(r:integer); var y1,y2,y3,y4,y5:integer;
    begin
      calculationx(r);
      y1:=y0-r;
      y2:=y0+trunc(r*cos(36*pi/180));
      y3:=y0-trunc(r*sin(18*pi/180));
      y4:=y0-trunc(r*sin(18*pi/180));
      y5:=y0+trunc(r*cos(36*pi/180));
      drow(x1,y1,x2,y2,x3,y3,x4,y4,x5,y5);
      r:=trunc(r*sin(18*pi/180)/sin(126*pi/180));
      calculationx(r);
      y1:=y0+r;
      y2:=y0-trunc(r*cos(36*pi/180));
      y3:=y0+trunc(r*sin(18*pi/180));
      y4:=y0+trunc(r*sin(18*pi/180));
      y5:=y0-trunc(r*cos(36*pi/180));
      drow(x1,y1,x2,y2,x3,y3,x4,y4,x5,y5);
      if (r>0) then stars(trunc(r*sin(18*pi/180)/sin(126*pi/180)));
    end;
    begin
      read(l);
      initgraph(gd,gm,'');
      x0:=getmaxx div 2;
      y0:=getmaxy div 2;
      r:=trunc(l/cos(18*pi/180)/2);
      {circle(x0,y0,r);}
      stars(r);
      readkey;
    end.

    классический унылый быдлокод, или "за что я ненавижу паскаль"

    описание автора:

    Известно, что у правильной пятиконечной звезды вершины лежат в вершинах правильного пятиугольника. Так же пятиугольник образуется при пересечении ее сторон. Так что в пентаграмму можно вписать еще одну пентаграмму. Что, собственно, я и сделала.
    После несложных операций с рисунками мне удалось определить углы между стороной пентакла и отрезком, соединяющим вершину и центр, и между стороной правильного пятиугольника и высотой (медианой) к ней. Из углов удалось рассчитать нужные соотношения.
    Попробуйте самостоятельно посчитать их, прежде чем читать решение.
    Построение
    Программа нарисует звезду по длине ее стороны. Т.е. программе нужен расчет координат вершин и длины меньшей звезды от большей. Я использовала рекурсию для рисования звезды.

    http://clubs.ya.ru/4611686018427394475/replies.xml?item_no=1045&nocookiesupport =yes

    Lure Of Chaos, 16 Сентября 2010

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