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

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

    +64

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    Товарищи, стоит задача: найти количество слов в строке.
     Автор  (http://programmersforum.ru/showthread.php?p=1269850#post1269850) просто делит строку по пробелам, затем
    подсчитывает кол-во слов.
    Я же,  говорю, что такой подход НЕПРАВИЛЕН,  т.к. в русском
    языке (да и не только) слова разделяются символами пунктуации, которые сами в состав слова не входят - следовательно, делить нужно по ним: 
     [code]" ' . , ! ?: ;  -  + <пробел> <табуляция> ( )[code]
     На меня сразу же наехали и поудаляли мои сообщения. Неужели я не прав?

    Баян все еще там: http://programmersforum.ru/showthread.php?p=1269850#post1269850

    Stertor, 28 Августа 2013

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

    +117

    1. 1
    \d+[\+-x\*]\d+\d+[\+-x\*\d+

    Даже не говнокод, а фиг знает что. Решил сегодня поизучить регеспы, почитал пару мануалов, зашел на MSDN

    http://msdn.microsoft.com/ru-ru/library/az24scfc.aspx

    А там этот пример. И указано что он находит "2+2" и "3*9" в "(2+2) * 3*9"

    Я подозреваю, что они хотели написать @"\d+[+-\\*]\d+". Печально, когда человек, день знакомый с регулярками, находит в их примерах ошибки(

    kegdan, 06 Августа 2013

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

    +131

    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
    1
    1
    	
    
    Имеется графический обозреватель картинок, где мини-изображения хранятся в ImageList, а выводятся ListView (поименованные графические файлы). При открытие папок с картинками (где большое количество картинок) возникает торможение отображения. Вся программа начинает тормозить, ожидая загрузки картинок в ListView. Чтобы избежать такого, я вынес загрузку ListBox в отдельный процесс Thread. В результате возникла другая проблема: при загрузке картинок, часть загружается просто черными квадратами. Как избавиться от этого неприятного эффекта?
    
    Код выбора папки для дальнейшего просмотра содержимого:
    
    procedure TForm1.DirectoryListBox1Change(Sender: TObject);
    begin
      Form1.ListView1.Clear;
      Form1.ImageList1.Clear;
      NewThread:=TNewThread.Create(false);
      NewThread.FreeOnTerminate:=true;
      NewThread.Priority:=tpHighest;
      NewThread.Resume;
    end;
    
    Код отдельно выделенного процесса:
    
    procedure TNewThread.Execute;
    begin
      Form1.FillListView(form1.DirectoryListBox1.Directory , '*.jpg');
      Form1.FillListView(form1.DirectoryListBox1.Directory, '*.bmp');
    end;
    
    И наконец код обработки графических файлов с последующей загрузкой в ListBox:
    
    procedure TForm1.fillListView(path: string; mask: string = '*.jpg');
    var
      sr:  TSearchRec;
      img: TPicture;
      bmp: TBitmap;
      pic: TBitMap;
      x,y: integer;
    begin
      img := TPicture.Create;
      bmp := TBitMap.Create;
      pic := TBitMap.Create;
    
      With Form1 do
      if FindFirst(path +'\'+mask, faAnyFile, sr) = 0 then
      begin
        repeat
          if (sr.Name<>'.') and (sr.Name<>'..') and (sr.Attr<>faDirectory) then
          //if (sr.Attr and $20) = $20 then
          begin
            try
              img.LoadFromFile(path +'\'+ sr.Name);
            except
              Continue;
            end;
            bmp.Assign(img.Graphic);
            x:=bmp.Width;
            y:=bmp.Height;
            pic.Width := ImageList1.Width;
            pic.Height:= ImageList1.Height;
            pic.Canvas.Brush.Color :=clWhite;
            pic.Canvas.FillRect(Canvas.ClipRect);
            pic.Canvas.StretchDraw(Rect(0,0,pic.Width, Round((pic.Height*y)/x)), bmp);
            ImageList1.Add(pic, nil);
    
            with ListView1.Items.Add do
            begin
              Caption := sr.Name;
              ImageIndex := ListView1.Items.Count-1;
            end;
          end;
        until FindNext(sr) <> 0;
        FindClose(sr);
      end;
      img.Free;
      bmp.Free;
      pic.Free;
    end;

    Не сопротивляйся, смерть сладка.

    http://hashcode.ru/questions/86688/delphi-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0-%D1%81-listview-%D0%B2-%D0%B4%D0%B5%D0%BB%D1%84%D0%B8

    Stertor, 27 Июля 2013

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

    +159

    1. 1
    2. 2
    3. 3
    4. 4
    /* Я решил не выбирать какой-то определенный код, а просто запостить сцыл на гитхаб. 
    Ах да, свежие коммиты все же есть, так что, за говнокодом можно наблюдать "в прямом эфире"! */
    
    да прибудет с вами "<?php die;"

    https://github.com/mpak2/mpak.su/blob/master/include/mpfunc.php

    nkarakin, 11 Июня 2013

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

    −121

    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
    Функция ТекстЗапросаИзСтрокиВЧисло(пИмяПоля, пДлинаСтроки, пСимволРазделителя=".")
        лТекст="ВЫБОР ";
        Для лДлинаЦелойЧасти=0 По пДлинаСтроки Цикл
            Если лДлинаЦелойЧасти=пДлинаСтроки Тогда 
                лТекст=лТекст+"ИНАЧЕ"+Символы.ПС;
            Иначе
                лТекст=лТекст+"КОГДА ПОДСТРОКА("+пИмяПоля+", "+(лДлинаЦелойЧасти+1)+", 1)="""+пСимволРазделителя+""" ИЛИ ПОДСТРОКА("+пИмяПоля+", "+(лДлинаЦелойЧасти+1)+", 1)="""" ТОГДА "+Символы.ПС;
            КонецЕсли; 
            Если лДлинаЦелойЧасти=0 Тогда лТекст=лТекст+"    0"+Символы.ПС; КонецЕсли; 
            Для лИнд=1 По лДлинаЦелойЧасти Цикл
               лТекст=лТекст+"    ВЫБОР "+Символы.ПС;
                Для лЦифра=0 По 9 Цикл
                    лТекст=лТекст+"    КОГДА ПОДСТРОКА("+пИмяПоля+", "+лИнд+", 1)="""+лЦифра+""" ТОГДА "+лЦифра+Символы.ПС;
                КонецЦикла;
                лТекст=лТекст+"    ИНАЧЕ 0 КОНЕЦ"+?(лИнд=лДлинаЦелойЧасти, "", "*"+Формат(Pow(10, лДлинаЦелойЧасти-лИнд), "ЧРД=.; ЧГ=0")+"+")+Символы.ПС;
            КонецЦикла;
            Для лИнд=лДлинаЦелойЧасти+2 По пДлинаСтроки Цикл
                лТекст=лТекст+"+ ВЫБОР";
                Для лЦифра=0 По 9 Цикл
                    лТекст=лТекст+"    КОГДА ПОДСТРОКА("+пИмяПоля+", "+лИнд+", 1)="""+лЦифра+""" ТОГДА "+лЦифра+Символы.ПС;
                КонецЦикла;
                лТекст=лТекст+"    ИНАЧЕ 0 КОНЕЦ"+?(лИнд=лДлинаЦелойЧасти, "", "/"+Формат(Pow(10, лИнд-лДлинаЦелойЧасти-1), "ЧРД=.; ЧГ=0"))+Символы.ПС;
            КонецЦикла;
        КонецЦикла;
        лТекст=лТекст+"КОНЕЦ";
        Возврат лТекст;
    КонецФункции

    kovyl2404, 23 Апреля 2013

    Комментарии (35)
  7. Си / Говнокод #12534

    +111

    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
    /* ..от молодых, дерзких и успешных,
    форматирование и комментарии сохранены. */
    void zanulit_massiv ()
    {
    	int i;
    	for(i=0;i<27;i++) // dlja vseh elementov massiva
    	{
    		switch (i)   // perebiraem
    		{
    		case 0: mass_znach[0]=3;
    		case 1: mass_znach[0]=5;
    		case 2: mass_znach[0]=6;
    		case 3: mass_znach[0]=1;
    		case 4: mass_znach[0]=2;
    		case 5: mass_znach[0]=3;
    		case 6: mass_znach[0]=4;
    		case 7: mass_znach[0]=5;
    		case 8: mass_znach[0]=6;
    		case 9: mass_znach[0]=31;
    		case 10: mass_znach[0]=2;
    		case 11: mass_znach[0]=1;
    		case 12: mass_znach[0]=1;
    		case 13: mass_znach[0]=1;
    		case 14: mass_znach[0]=33;
    		case 15: mass_znach[0]=15;
    		case 16: mass_znach[0]=13;
    		case 17: mass_znach[0]=8;
    		case 18: mass_znach[0]=43;
    		case 19: mass_znach[0]=2;
    		case 20: mass_znach[0]=9;
    		case 21: mass_znach[0]=14;
    		case 22: mass_znach[0]=17;
    		case 23: mass_znach[0]=21;
    		case 24: mass_znach[0]=22;
    		case 25: mass_znach[0]=8;
    		case 26: mass_znach[0]=5;
    		default: break; // objazatelno v sluchae neizvesnogo znacheniya
    		}
    	}
    }

    Не могу больше :|

    neudachnik, 03 Февраля 2013

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

    +141

    1. 1
    2. 2
    3. 3
    4. 4
    protected override Type GetEntryType()
    {
        return typeof(ReportEntry);
    }

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

    UniXoiD, 21 Января 2013

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

    +118

    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
    void dwflt_to_str(DWORD dw, char *pch, int &nsmb)
    {
      DWORD dw_a = dw;
      char ch_a;
      char tbldec[] = "0123456789";
      nsmb = 0;
      if (dw_a == 0) { pch[0] = '0'; nsmb++; goto lab2; }
      while (dw_a != 0)
      {
        pch[nsmb] = tbldec[dw_a%10]; dw_a /= 10; nsmb++;
      }
      dw_a = nsmb/2;
      while (dw_a)
      {
        ch_a = pch[nsmb - dw_a]; pch[nsmb - dw_a] = pch[dw_a - 1]; pch[dw_a - 1] = ch_a; dw_a--;
      }
    lab2:
      pch[nsmb] = 0;
    }
    
    const int n_fr2 = 7; // - эта константа определяет фиксированное число цифр после точки в выводимой строке, представляющей float.
    
    void float_to_str(float flt, char *pchar, int &nsmb)
    {
      int i, deg, ns_int, ns_frac;
      double frac_dbl;
      DWORD dw_f, mant, intg, fract;
      DW_FL f_flt;
      char szfl_int[16], szfl_frac[16];
      f_flt.fl = flt;
      dw_f = f_flt.dw;
      if (dw_f == 0) { pchar[0] = '0'; pchar[1] = '.'; pchar[2] = '0'; pchar[3] = 0; nsmb = 3; return; }
      if (dw_f & 0x80000000) { pchar[0] = '-'; } else { pchar[0] = '+'; }
      deg = int((dw_f & 0x7F800000) >> 23) - 127;
      mant = (dw_f & 0x007FFFFF) | 0x00800000;
      if (deg == 0) { intg = 1; fract = dw_f & 0x007FFFFF; goto lab_1; }
      if (deg > 0) { intg = mant >> (23 - deg); fract = ((dw_f & 0x007FFFFF) << deg) & 0x007FFFFF; goto lab_1; }
      if (deg < 0) { intg = 0; fract = ((dw_f & 0x007FFFFF) | 0x00800000) >> (-deg); }
    lab_1:
      frac_dbl = double(fract)*1.1920928955078125;// 1.1920928955078125 = 10^n_fr2 / 2^23 = 10^7 / 2^23
      fract = (int)frac_dbl;
    
      dwflt_to_str(intg, szfl_int, ns_int);
      nsmb = 1; i = ns_int; while (i) { pchar[i + 1] = szfl_int[i]; i--; } pchar[1] = szfl_int[0];
      nsmb += ns_int; pchar[nsmb] = '.'; nsmb++;
    
      dwflt_to_str(fract, szfl_frac, ns_frac); szfl_frac[n_fr2] = 0;
      i = ns_frac; while (i) { szfl_frac[6 - ns_frac + i] = szfl_frac[i - 1]; i--; }
      i = n_fr2 - ns_frac; while (i) { szfl_frac[i - 1] = '0'; i--; }
    
      i = n_fr2 - 1; while (i) { pchar[nsmb + i] = szfl_frac[i]; i--; } pchar[nsmb] = szfl_frac[0];
      nsmb += n_fr2; pchar[nsmb] = 0;
    }
    void float_to_str_exp(float flt, char *pchar, int &nsmb)
    {
      int i, deg, poli, ns_int, ns_frac, ns_poli;
      double frac_dbl;
      DWORD dw_f, mant, intg, fract;
      DW_FL f_flt;
      char szfl_int[16], szfl_frac[16];
      f_flt.fl = flt;
      dw_f = f_flt.dw;
      if (dw_f == 0) { pchar[0] = '0'; pchar[1] = '.'; pchar[2] = '0'; pchar[3] = 0; nsmb = 3; return; }
      if (dw_f & 0x80000000) { pchar[0] = '-'; } else { pchar[0] = '+'; }
      deg = int((dw_f & 0x7F800000) >> 23) - 127;
      mant = (dw_f & 0x007FFFFF) | 0x00800000;
      if (deg == 0) { intg = 1; fract = dw_f & 0x007FFFFF; goto lab_1; }
      if (deg > 0) { intg = mant >> (23 - deg); fract = ((dw_f & 0x007FFFFF) << deg) & 0x007FFFFF; goto lab_1; }
      if (deg < 0) { intg = 0; fract = ((dw_f & 0x007FFFFF) | 0x00800000) >> (-deg); }
    lab_1:
      frac_dbl = double(fract)*1.1920928955078125;// 1.1920928955078125 = 10^n_fr2 / 2^23 = 10^7 / 2^23
      fract = (int)frac_dbl;
    
      dwflt_to_str(intg, szfl_int, ns_int);
      dwflt_to_str(fract, szfl_frac, ns_frac); szfl_frac[n_fr2] = 0;
      if (intg != 0)
      {
        nsmb = 1; i = ns_int; while (i) { pchar[i + 2] = szfl_int[i]; i--; } pchar[1] = szfl_int[0];
        pchar[2] = '.'; nsmb += ns_int + 1; poli = ns_int - 1;
      }
      else
      {
        i = ns_frac - 1; while (i) { pchar[2 + i] = szfl_frac[i]; i--; } pchar[1] = szfl_frac[0];
        pchar[2] = '.'; nsmb = 3;//nsmb += ns_frac + 1;
        poli = ns_frac - n_fr2 - 1; goto lab_2;
      }
    
      i = ns_frac; while (i) { szfl_frac[6 - ns_frac + i] = szfl_frac[i - 1]; i--; }
      i = n_fr2 - ns_frac; while (i) { szfl_frac[i - 1] = '0'; i--; }
    
      i = n_fr2 - 1; while (i) { pchar[nsmb + i] = szfl_frac[i]; i--; } pchar[nsmb] = szfl_frac[0];
    lab_2:
      nsmb += n_fr2; pchar[nsmb] = 'E';
    
      int_to_str(poli, &pchar[nsmb + 1], ns_poli);
      nsmb += ns_poli + 1; pchar[nsmb] = 0;
    }

    оттуда

    TarasB, 15 Января 2013

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

    +137

    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
    using System;
     
    class TLockCriticalSystemResource : IDisposable
    {
            public TLockCriticalSystemResource(){Console.WriteLine("Acquire critical system resource");}
            public void Dispose(){Console.WriteLine("Release critical system resource");}
            public bool Property1{private get{return true;}set{throw new Exception();}}
    }
     
    public class Test
    {
            public static void Main()
            {
                    using (var file = new TLockCriticalSystemResource()
                            {
                                    Property1=true
                            })
                    {
                        // Делаем чего-то с ресурсом
                    }
            }
    }

    Ололо. using не даёт гарантию безопасности с точки зрения исключений:
    http://ideone.com/nHDIJ
    Системный ресурс остался захваченным.

    LispGovno, 17 Октября 2012

    Комментарии (35)
  11. JavaScript / Говнокод #11778

    +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
    @show[]
    $cars[^table::sql{select * from count_cars order by sortir}]
    <script>
    var CarsDescription = new Array()^;
    $counter(1)
    ^cars.menu{
    CarsDescription[$counter] = '$cars.characteristic'^;
     ^counter.inc[]
    }
    </script> 
    <script type="text/javascript" src="/cars_calc/script.js"></script>
    <link rel="stylesheet" type="text/css" href="/cars_calc/style.css">
    <section class="page">
       <section class="scheme">
        <span id="cr" class="cr"></span>
            $cars_count(16)      
            ^for[car](1;$cars_count){ 
        <span id="select-car-$carId" class="car-$carId">$car</span>
            }
     </section>

    Код из одной веб-студии. Смысл в том что в javascript должен быть передан массив из базы данных, вместо того чтобы послать пакет с нужными данными в формате json (или любом другом) и обработать его, в исходный файл html-разметки (тут как видно и javascript вставлен) добавили код Parser'а (для тех кто-незнаком это язык для быстрой разработки веб-сайтов от Лебедева, что-то вроде простой альтернативы php), который перед тем как отдать пользователю страницу, обрабатывает её и вставляет в нужные места, нужные данные. В общем сами оценивайте этот маразм...

    Kerny, 16 Сентября 2012

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