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

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

    +25

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    #ncld<strm.h>
    vd mn()
    {
    ct<<"Hll, wrld!";
    cn.gt();
    }

    Нхй пргрммрвн.

    dos_, 29 Мая 2012

    Комментарии (28)
  3. Куча / Говнокод #10329

    +116

    1. 1
    append x = foldr (map (:) x) id

    HaskellGovno, 20 Мая 2012

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

    +1007

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    #if defined( HPUX_11_31 )
    #define BDYNAMIC_CAST( CLASS, OBJECT )  (( CLASS ) ( OBJECT ))
    #else
    #define BDYNAMIC_CAST( CLASS, OBJECT )  (dynamic_cast< CLASS >(( OBJECT )))
    #endif

    чуть кофе не похлебнулся.

    при более детальном рассмотрении кода из-за которого это сделали, выяснилось что: (А) в проекте нет ни одного места где нужен динамик каст и (Б) половина наших С++ профисианалов не умеют пользоватся конст кастом (который по коду там и был им нужен, вместе со статик кастом).

    Dummy00001, 08 Февраля 2012

    Комментарии (28)
  5. PHP / Говнокод #9345

    +174

    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
    //присваиваем массиву значения
    	for ($i=0; $i<7; $i++) 
    		{
    		$rand[$i]=rand(1,52);
    		}
    
    //проверяем 50 раз что бы исключить повторы
    for ($i=0; $i<50; $i++) 
    	{
    //проверяем $rand[0] на совпадения
    	if ($rand[0]==$rand[1])
    		{
    		$rand[0]=rand(1,52);
    		}
    	else
    		{
    		if ($rand[0]==$rand[2])
    			{
    			$rand[0]=rand(1,52);
    			}
    		else
    			{
    			if ($rand[0]==$rand[3])
    				{
    				$rand[0]=rand(1,52);
    				}
    			else
    				{
    				if ($rand[0]==$rand[4])
    					{
    					$rand[0]=rand(1,52);
    					}
    				else
    					{
    					if ($rand[0]==$rand[5])
    						{
    						$rand[0]=rand(1,52);
    						}
    					else
    						{
    						if ($rand[0]==$rand[6])
    							{
    							$rand[0]=rand(1,52);
    							}
    						}
    					}
    				}
    			}
    		}
    
    //проверяем $rand[1] на совпадения
    	if ($rand[1]==$rand[0])
    		{
    		$rand[1]=rand(1,52);
    		}
    	else
    		{
    		if ($rand[1]==$rand[2])
    			{
    			$rand[1]=rand(1,52);
    			}
    		else
    			{
    			if ($rand[1]==$rand[3])
    				{
    				$rand[1]=rand(1,52);
    				}
    			else
    				{
    				if ($rand[1]==$rand[4])
    					{
    					$rand[1]=rand(1,52);
    					}
    				else
    					{
    					if ($rand[1]==$rand[5])
    						{
    						$rand[1]=rand(1,52);
    						}
    					else
    						{
    						if ($rand[1]==$rand[6])
    							{
    							$rand[1]=rand(1,52);
    							}
    						}
    					}
    				}
    			}
    		}

    Генератор "не повторяющихся цифр от 1 до 52"
    Влезло 2 if-блока из семи в оригинале :)

    govnokod-observer, 07 Февраля 2012

    Комментарии (28)
  6. Java / Говнокод #9299

    +83

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    class o{
    	public  o o(o o){
    			return o;
    	}
    }

    Может не в тему, но выглядит забавно.

    levsha128, 02 Февраля 2012

    Комментарии (28)
  7. Objective C / Говнокод #8830

    −116

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    NSString *selectedDate2=appDelegate.date;
        NSString *y=[selectedDate2 substringWithRange:NSMakeRange(0,4)];
        NSString *m=[selectedDate2 substringWithRange:NSMakeRange(5,2)];
        NSString *d=[selectedDate2 substringWithRange:NSMakeRange(8,2)];
        NSString *selectedDate=[NSString stringWithFormat:@"%@-%@-%@",d,m,y];
        NSLog(@"Selected Date is %@",selectedDate);

    парсинг даты по-индусски

    realsugar, 15 Декабря 2011

    Комментарии (28)
  8. Java / Говнокод #8799

    +84

    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
    private enum FolderType{inbound, outbound, archive, rejected}
    
    private String inboundName = "inbound";
    private String outboundName = "outbound";
    private String archiveName = "archive";
    private String rejectedName = "rejected";
    
    // чуть ниже....
    private String getFolderTypeName(FolderType type){
        switch (type){
            case inbound:
                return inboundName;
            case outbound:
                return outboundName;
            case archive:
                return archiveName;
            case rejected:
                return rejectedName;
            default:
                throw new IllegalArgumentException(type.toString());
        }
    }

    Похоже, кто-то так и не въехал в жабьи енумы.

    roman-kashitsyn, 12 Декабря 2011

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

    +1000

    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
    bool __fastcall TItsString::operator == (const char* sVal) const
    {
      bool Empty1 = ((FStringValue == NULL) || (FStringValue[0] == 0));
      bool Empty2 = ((sVal == NULL) || (sVal[0] == 0));
      if (Empty1 && Empty2) return true;
      if (Empty1 || Empty2) return false;
      int i,j,k;
      for(i=0; FStringValue[i] && (GET_LOWER_CHAR(FStringValue[i]) == GET_LOWER_CHAR(sVal[i])); i++);
      if ((FStringValue[i] == 0) && (sVal[i] == 0)) return true;
      j=i; k=i;
      if (sVal[k] == 0)  for(; FStringValue[i] == 0x20; i++);
      if (FStringValue[k] == 0) for(; sVal[j] == 0x20; j++);
      if ((FStringValue[i] == 0) && (sVal[j] == 0)) return true;
      return false;
    }

    Try, 03 Декабря 2011

    Комментарии (28)
  10. JavaScript / Говнокод #8528

    +153

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    function isInteger(s)
    {
    	var i;
        for (i = 0; i < s.length; i++)
    	{   
            // Check that current character is number.
            var c = s.charAt(i);
            if (((c < "0") || (c > "9"))) return false;
        }
        // All characters are numbers.
        return true;
    }

    феерично

    DrFreez, 15 Ноября 2011

    Комментарии (28)
  11. PHP / Говнокод #8491

    +162

    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
    function section($sct,$grp = 'all') {
    		global $g,$a,$d,$lists,$master_list,$currency;
    		$access = ac_section($sct,$this->adminmode);
    		if ($access['r'] == 'no' )  {header("Location: /errors/all/403");}
    		$master = q1("SELECT * FROM `_s` WHERE `_id`='".$sct."' AND `_l`='".GetLanguage()."'");
    		if (isset($_POST['pcounts'])) {
    			$_SESSION['_pcount']=(int)$_POST['pcounts'];
    		} elseif (isset($_GET['pcounts'])) {
    			$_SESSION['_pcount']=(int)$_GET['pcounts'];
    		}
    		if (isset($_SESSION['_pcount'])) $master['_pcount']=$_SESSION['_pcount'];
            $master_struct = $this->Struct_fields(qa("SHOW COLUMNS FROM `_s`"));
    		$grps = qa("SELECT * FROM `_g` WHERE `_s`='".$sct."' AND `_g`='".$grp."' AND `_l`='".GetLanguage()."'".((!empty($a[0]['con']))?(" AND `header` LIKE '%".$a[0]['con']."%'"):('')).((!empty($a[0]['gby']))?(" ORDER BY `".$a[0]['gby']."`".((!empty($a[0]['gdir']))?(' DESC'):(' ASC'))):(" ORDER BY ".$master['_sorting'])).((!empty($a[0]['gfrom']))?(' LIMIT '.$a[0]['gfrom'].','.((!empty($a[0]['gper']))?($a[0]['gper']):((!empty($master['_gcount']))?($master['_gcount']):('10')))):(' LIMIT 0,'.((!empty($a[0]['gper']))?($a[0]['gper']):((!empty($master['_gcount']))?($master['_gcount']):('10'))))));
    		$this->cq++;
    		$grps_nav_count = qa("SELECT count(*) `c` FROM `_g` WHERE `_s`='".$sct."' AND `_g`='".$grp."' AND `_l`='".GetLanguage()."'".((!empty($a[0]['con']))?(" AND `header` LIKE '%".$a[0]['con']."%'"):('')));
    		$grps_len = sizeof($grps);
    		$grps_struct = $this->Struct_fields(qa("SHOW COLUMNS FROM `_g`"));
    		$pgs = qa("SELECT * FROM `_p` WHERE `_s`='".$sct."' AND `_g`='".$grp."' AND `_l`='".GetLanguage()."'".((!empty($a[0]['con']))?(" AND `header` LIKE '%".$a[0]['con']."%'"):('')).((!empty($a[0]['by']))?(" ORDER BY `".$a[0]['by']."`".((!empty($a[0]['dir']))?(' DESC'):(' ASC'))):(" ORDER BY ".$master['_sorting'])).((!empty($a[0]['from']))?(' LIMIT '.$a[0]['from'].','.((!empty($a[0]['per']))?($a[0]['per']):((!empty($master['_pcount']))?($master['_pcount']):('10')))):(' LIMIT 0,'.((!empty($a[0]['per']))?($a[0]['per']):((!empty($master['_pcount']))?($master['_pcount']):('10'))))));
    		$this->cq++;
    		$pgs_nav_count = qa("SELECT count(*) `c` FROM `_p` WHERE `_s`='".$sct."' AND `_g`='".$grp."' AND `_l`='".GetLanguage()."'".((!empty($a[0]['con']))?(" AND `header` LIKE '%".$a[0]['con']."%'"):('')));
    		$this->cq++;
    		$pgs_len = sizeof($pgs);
    		$pgs_struct = $this->Struct_fields(qa("SHOW COLUMNS FROM `_p`"));
    		$list_g = '';
    		$list_p = '';
    // Дальше еще строк 200 подобного кода

    Нашел бэкап сайта, который надо было дорабатывать
    И это только одна функция одного из классов. Всего около 15 классов, в каждом по 30-40 функций.
    При этом есть еще куча файлов вызываемых напрямую(отправка сообщений, добавление/редактирование/удаление данных в админке), хотя и используется mod_rewrite

    долго думал, потом переписал нужные куски заново

    Bagration, 11 Ноября 2011

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