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

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

    −176.1

    1. 1
    ДатаНачалаПериода = НачалоМесяца(Дата(Строка(Формат(ТекущийГод, "ЧГ=0")) + Строка(ТекущийМесяц) + "01"));

    Фрагмент кода от разработчиков конфигурации. Дело в том, что дату начала текущего месяца можно получить как НачалоМесяца(ТекущаяДата()). Даже если предположить, что переменные "ТекущийГод" и "ТекущийМесяц" содержат не актуальные значения (например, при перерасчете прошлых документов), достаточно выполнить НачалоМесяца(Дата(ТекущийГод, ТекущийМесяц, 1))

    polestnize, 08 Сентября 2009

    Комментарии (9)
  3. PHP / Говнокод #1770

    +158.9

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    static $badwords = array(
    ...
    '(?<=[_\d]) [гg]_?[оo]_?[вvb]_?[нnh]_?[оoаaяеeyу]', #говн[оаяеу]
    ...
    );

    самый дословный (мета-)говнокод.

    из censure.php -- Функция пытается определить наличие мата (нецензурных, матерных слов) в html-тексте.
    http://forum.dklab.ru/viewtopic.php?t=17146

    OlgaWolga, 05 Сентября 2009

    Комментарии (9)
  4. Pascal / Говнокод #1740

    +101.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
    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
    98. 98
    function DatePlusOneDay(Date: TDate): TDate;
    var
      Day, Month, Year: string;
    begin
      Day := Copy(DateToStr(Date), 1, 2);
      Month := Copy(DateToStr(Date), 4, 2);
      Year := Copy(DateToStr(Date), 7, 4);
      if frac(StrToFloat(Year) / 4) <> 0 then
        if (Month = '01') or (Month = '03') or (Month = '05') or (Month = '07') or (Month = '08') or (Month = '10') or (Month = '12') then
          if Day <> '31' then
            if StrToInt(Day) < 9 then Day := '0' + IntToStr(StrToInt(Day) + 1)
            else Day := IntToStr(StrToInt(Day) + 1)
          else
          begin
            Day := '01';
            if StrToInt(Month) < 9 then
              Month := '0' + IntToStr(StrToInt(Month) + 1)
            else
              if Month = '12' then
              begin
                Month := '01';
                Year := IntToStr(StrToInt(Year) + 1);
              end
              else Month := IntToStr(StrToInt(Month) + 1);
          end
        else
          if (Month = '04') or (Month = '06') or
          (Month = '09') or (Month = '11') then
            if Day <> '30' then
              if StrToInt(Day) < 9 then Day := '0' + IntToStr(StrToInt(Day) + 1)
              else Day := IntToStr(StrToInt(Day) + 1)
            else
            begin
              Day := '01';
              if StrToInt(Month) < 9 then Month := '0' + IntToStr(StrToInt(Month) + 1)
              else Month := IntToStr(StrToInt(Month) + 1);
            end
          else
            if Day <> '28' then
              if StrToInt(Day) < 9 then Day := '0' + IntToStr(StrToInt(Day) + 1)
              else Day := IntToStr(StrToInt(Day) + 1)
            else
            begin
              Day := '01';
              if StrToInt(Month) < 9 then Month := '0' + IntToStr(StrToInt(Month) + 1)
              else Month := IntToStr(StrToInt(Month) + 1);
            end
      else
        if (Month = '01') or (Month = '03') or (Month = '05') or (Month = '07') or (Month = '08') or (Month = '10') or (Month = '12') then
          if Day <> '31' then
            if StrToInt(Day) < 9 then Day := '0' + IntToStr(StrToInt(Day) + 1)
            else Day := IntToStr(StrToInt(Day) + 1)
          else
          begin
            Day := '01';
            if StrToInt(Month) < 9 then
              Month := '0' + IntToStr(StrToInt(Month) + 1)
            else
              if Month = '12' then
              begin
                Month := '01';
                Year := IntToStr(StrToInt(Year) + 1);
              end
              else
                Month := IntToStr(StrToInt(Month) + 1);
          end
        else
          if (Month = '04') or (Month = '06') or
          (Month = '09') or (Month = '11') then
            if Day <> '30' then
              if StrToInt(Day) < 9 then
                Day := '0' + IntToStr(StrToInt(Day) + 1)
              else
                Day := IntToStr(StrToInt(Day) + 1)
            else
            begin
              Day := '01';
              if StrToInt(Month) < 9 then
                Month := '0' + IntToStr(StrToInt(Month) + 1)
              else
                Month := IntToStr(StrToInt(Month) + 1);
            end
          else
            if Day <> '28' then
              if StrToInt(Day) < 9 then
                Day := '0' + IntToStr(StrToInt(Day) + 1)
              else
                Day := IntToStr(StrToInt(Day) + 1)
            else
            begin
              Day := '01';
              if StrToInt(Month) < 9 then
                Month := '0' + IntToStr(StrToInt(Month) + 1)
              else
                Month := IntToStr(StrToInt(Month) + 1);
            end;
      DatePlusOneDay := StrToDate(Day + '.' + Month + '.' + Year);
    end;

    Писалось, когда не знали о эквиваленте (Date + 1)

    SaNdMaN, 01 Сентября 2009

    Комментарии (9)
  5. JavaScript / Говнокод #1684

    +158.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
    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
    function h_circle_1_view() {
    	document.getElementById("circle_1").style.display = "block";
    	document.getElementById("circle_2").style.display = "none";
    	document.getElementById("circle_3").style.display = "none";
    	document.getElementById("circle_4").style.display = "none";
    	document.getElementById("circle_5").style.display = "none";
    	}
    	function h_circle_1_none() {
    	document.getElementById("circle_1").style.display = "none";
    	}
    	
    	function h_circle_2_view() {
    	document.getElementById("circle_1").style.display = "none";
    	document.getElementById("circle_2").style.display = "block";
    	document.getElementById("circle_3").style.display = "none";
    	document.getElementById("circle_4").style.display = "none";
    	document.getElementById("circle_5").style.display = "none";
    	}
    	function h_circle_2_none() {
    	document.getElementById("circle_2").style.display = "none";
    	}
    	
    	function h_circle_3_view() {
    	document.getElementById("circle_1").style.display = "none"; 
    	document.getElementById("circle_2").style.display = "none"; // прячем 1, 2
    	document.getElementById("circle_3").style.display = "block";	// показываем 3
    	document.getElementById("circle_4").style.display = "none";
    	document.getElementById("circle_5").style.display = "none";
    	}
    	function h_circle_3_none() {
    	document.getElementById("circle_3").style.display = "none";
    	}
    	
    	function h_circle_4_view() {
    	document.getElementById("circle_1").style.display = "none"; 
    	document.getElementById("circle_2").style.display = "none"; 
    	document.getElementById("circle_3").style.display = "none"; // прячем 1, 2
    	document.getElementById("circle_4").style.display = "block";	// показываем 3
    	document.getElementById("circle_5").style.display = "none";
    	}
    	function h_circle_4_none() {
    	document.getElementById("circle_4").style.display = "none";
    	}
    	
    	function h_circle_5_view() {
    	document.getElementById("circle_1").style.display = "none"; 
    	document.getElementById("circle_2").style.display = "none"; 
    	document.getElementById("circle_3").style.display = "none"; // прячем 1, 2
    	document.getElementById("circle_4").style.display = "none";	// показываем 3
    	document.getElementById("circle_5").style.display = "block";
    	}
    	function h_circle_5_none() {
    	document.getElementById("circle_5").style.display = "none";
    	}

    Натолкнулся вот при тестировании одного проекта

    Abductio, 25 Августа 2009

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

    +135.1

    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
    if ((Owner as Form1).ZakazdataGrid.Columns.Count == 0)
                {
                    (Owner as Form1).ZakazdataGrid.Columns.Add("KodTov", "");
                    (Owner as Form1).ZakazdataGrid.Columns.Add("NazvaTov", "Товар");
                    (Owner as Form1).ZakazdataGrid.Columns.Add("Kolvo", "Кол-во");
                    (Owner as Form1).ZakazdataGrid.Columns.Add("NazvaEd", "Ед.");
                    (Owner as Form1).ZakazdataGrid.Columns.Add("Suma", "Сумма");
                    (Owner as Form1).ZakazdataGrid.Columns.Add("KolEd", "");
                    (Owner as Form1).ZakazdataGrid.Columns.Add("Sostavnoy", "");
                    (Owner as Form1).ZakazdataGrid.Columns.Add("Sostav", "");
                    (Owner as Form1).ZakazdataGrid.Columns["Sostavnoy"].Visible = false;
                    (Owner as Form1).ZakazdataGrid.Columns["Sostav"].Visible = false;
                    (Owner as Form1).ZakazdataGrid.Columns["KodTov"].Visible = false;
                    (Owner as Form1).ZakazdataGrid.Columns["KolEd"].Visible = false;
                    (Owner as Form1).ZakazdataGrid.Columns["NazvaTov"].Width = (int)((Owner as Form1).ZakazdataGrid.Width * 0.5);
                    (Owner as Form1).ZakazdataGrid.Columns["NazvaTov"].SortMode = DataGridViewColumnSortMode.NotSortable;
                    (Owner as Form1).ZakazdataGrid.Columns["Kolvo"].Width = (int)((Owner as Form1).ZakazdataGrid.Width * 0.15);
                    (Owner as Form1).ZakazdataGrid.Columns["Kolvo"].SortMode = DataGridViewColumnSortMode.NotSortable;
                    (Owner as Form1).ZakazdataGrid.Columns["NazvaEd"].Width = (int)((Owner as Form1).ZakazdataGrid.Width * 0.15);
                    (Owner as Form1).ZakazdataGrid.Columns["NazvaEd"].SortMode = DataGridViewColumnSortMode.NotSortable;
                    (Owner as Form1).ZakazdataGrid.Columns["Suma"].Width = (int)((Owner as Form1).ZakazdataGrid.Width * 0.2);
                    (Owner as Form1).ZakazdataGrid.Columns["Suma"].SortMode = DataGridViewColumnSortMode.NotSortable;
                    (Owner as Form1).ZakazdataGrid.RowsDefaultCellStyle.Font = new Font("Times New Roman", FontSize - 5);
                    (Owner as Form1).ZakazdataGrid.ColumnHeadersDefaultCellStyle.Font = new Font("Times New Roman", FontSize - 5);
                    (Owner as Form1).ZakazdataGrid.AlternatingRowsDefaultCellStyle.BackColor = Color.PowderBlue;
                    (Owner as Form1).ZakazdataGrid.RowsDefaultCellStyle.BackColor = Color.LightSkyBlue;
                }

    Отсюда: http://sql.ru/forum/actualthread.aspx?tid=688754
    :-)

    VMcL, 21 Августа 2009

    Комментарии (9)
  7. PHP / Говнокод #1645

    +160

    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
    $query="SHOW COLUMNS FROM ".$table;
    $result_field=mysql_query($query);
    $num_field=mysql_num_rows($result_field);
    
    for ($i = 0; $i<$num_field; $i++)
    {
        $row=mysql_fetch_array($result_field);
        $field_array[$i]=$row[0];
    }
    
    foreach ($field_array as $field)
        $select_field.=$field.',';
    
    $select_field=substr($select_field,0,-1);
    
    $query='select '.$select_field.' from '.$table;
    ...

    Аналог $query='select * from '.$table;

    porten, 20 Августа 2009

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

    +149

    1. 1
    $from = isset($_POST[$query[0]])? $_POST[$query[0]] : isset($_GET[$query])? $_GET[$query[0]]: null;

    Выдавил

    azzz, 20 Августа 2009

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

    +28

    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
    COMMAND command;
    BUFFER Buffer1;
    BUFFER Buffer2;
    ...
    byte NetSend(byte*& data, int& size)
    {
    	byte fErr = NO_ERRORS;
    	char* const Data = (char* const)data;
    
    	if(Data != 0)
    	{
    		if(Data[0] != 0)
    		{
    			Buffer1.writeData(Data,size,NULL);
    			command='Send';
    			byte fErr=net.sendCommand(command,Buffer1);
    		}
    		else 
    		{
    			Buffer2.writeData(Data,size,NULL);
    			command='SendFast';
    			byte fErr=net.sendCommand(command,Buffer2);
    		};
    	}
    	else
    	{
    		byte fErr=SEND_PARAM_ERROR;
    	}
    	
    	return fErr;
    };

    Зачем же автор завёл два Buffer? :D

    Говногость, 19 Августа 2009

    Комментарии (9)
  10. Си / Говнокод #1630

    +134

    1. 1
    2. 2
    3. 3
    4. 4
    int* a=new int;
    ...
    constant=1/*a;
    ...

    Один студент в блокноте писал...

    Говногость, 19 Августа 2009

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

    +6.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
    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
    #ifndef SOCHET_H
    #define SOCHET_H
    
    // Сдвигает самую младшую единицу в сторону младшего разряда
    #define shiftLast1Right(x) ( (x-1)^((x^(x-1)) >> 2) )
    
    // Дописывает 1 после самой младшей единицы
    #define add1AfterLast1(x) ( x | ((x^(x-1))+1) >> 2 )
    
    template<class T>
    class Sochet
    {
    public:
    	T value;
    
    	//////////////////////////////////////////////////////////////////////////
    
    	Sochet():value(0) { }
    	Sochet(int n, int k) {
    		firstTurn(n, k);
    	}
    	~Sochet() {
    		value = 0;
    	}
    
    	//////////////////////////////////////////////////////////////////////////
    
    	// Первая комбинация
    	// В первоначальной ситуации все К единиц располагаются в старших битах
    	void firstTurn(int n, int k) {
    		value = ( ( T(1) << k ) - 1 ) << (n - k);
    	}
    
    	// Нахождение следующей комбинации
    	// Возвращает false в случае последней комбинации
    	bool nextTurn()
    	{
    		// Отлов последней комбинации
    		if (value & (value+1) == 0)
    			return false;
    		
    		// Условие по младшему биту: 1 или 0
    		if (value & 1)
    		{
    			value >>= 1;
    			nextTurn();
    			value = add1AfterLast1(value << 1);
    		} else
    			value = shiftLast1Right(value);
    		
    		return true;
    	}
    }
    
    #endif // SOCHET_H

    Шаблон перебора всех сочетаний/выборок в много разрядных числах.
    Пример перебираемых чисел для N=5, K=3:
    11100
    11010
    11001
    10110
    10101
    10011
    01110
    01101
    01011
    00111

    // Код выглядит сочно(особенно дефайны), зато всё работает максимально быстро.
    // Статья про этот алгоритм: http://k06a.blogspot.com/2009/04/blog-post_08.html

    k06a, 15 Августа 2009

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