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

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

    +86

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    public interface ArchitectureUnit<T> {
    		
    		public T release(Object... params); 
    		
    	}

    максимальная гибкость

    _a_o_O, 12 Ноября 2014

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

    +86

    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
    public PriceComparator {
    
       private PriceComparator INSTANCE;
    
        public PriceComparator() {
            INSTANCE = this;
        }
    
        public PriceComparator getInstance() {
            return INSTANCE;
        }
    
    ...
    }

    Singleton fail...

    StanDalone, 22 Октября 2014

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

    +86

    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
    procedure TForm1.FormCreate(Sender: TObject);
    begin
    panel27.Caption:=' ' + TimeToStr(time);
    KeyPreview := true;
    Form1.BorderStyle:=bsNone;
    Form1.WindowState:=wsMaximized;
    ShowWindow(Application.Handle, SW_HIDE);
    
    end;
    
    procedure TForm1.Timer2Timer(Sender: TObject);
    var
    Images: array[0..25] of Timage;
    i,p:integer;
    begin
    {Цикл для прорисовки канвы,идея безумная но иначе она прорисовывается не полностью}
    {РАБОТАЕТ? НЕ ТРОГАЙ!©}
    for i:=0 to 26 do
     begin
    images[0]:=image1;
    images[1]:=image2;
    images[2]:=image3;
    images[3]:=image4;
    images[4]:=image5;
    images[5]:=image6;
    images[6]:=image7;
    images[7]:=image8;
    images[8]:=image9;
    images[9]:=image10;
    images[10]:=image11;
    images[11]:=image12;
    images[12]:=image13;
    images[13]:=image14;
    images[14]:=image15;
    images[15]:=image16;
    images[16]:=image17;
    images[17]:=image18;
    images[18]:=image19;
    images[19]:=image20;
    images[20]:=image21;
    images[21]:=image22;
    images[22]:=image23;
    images[23]:=image24;
    images[24]:=image25;
    images[25]:=image26;
    
    if i>25
    then PageControl1.ActivePageIndex:=0
    else begin
    PageControl1.ActivePageIndex:=i;
    {Квадраты,Круг,Дуги}
    images[i].Canvas.rectangle(200,50,300,150);
    images[i].Canvas.rectangle(200,200,300,300);
    images[i].Canvas.rectangle(200,350,300,450);
    ...
    {Дальше идут канвас код которых примерно строк 150}
    ...
    end;
    p:=Gauge1.Progress+4;
    if p<100 then
    Gauge1.Progress:=p;
    end;
    timer2.Enabled:=false;
    Gauge1.Progress:=100;
    end;

    Изначально суть была в том, что при запуске программы окно разворачивалось на весь экран и вырисовывалось изображение на имаге(точнее несколько...штук 26),которые находились на пейдж контроле с 26 табщитами, но т.к в конструкторе окно формы не огромных размеров то вырисовывалось изображение размером с это маленькое окно оставляя огромный пробел справа и снизу.Позже проблема решилась и на активной вкладке пейджконтрола вырисовка была правильной, но на остальных неактивных такой же как и вначале. Пришлось при запуске переключать табщиты и поочередно рисовать на канве, все это происходит за 2-3 секунды каждый раз при запуске программы..другого решения увы не нашел.

    HiiamMarvin, 17 Октября 2014

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

    +86

    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
    function IsMemoryCommitByAdress(const AAddress: Pointer): Boolean;
    var
      MemoryInfo: TMemoryBasicInformation;
    begin
      Result := False;
      if not Assigned(AAddress) then
      Exit;
      VirtualQuery(AAddress, MemoryInfo, SizeOf(MemoryInfo));
      Result := MemoryInfo.State and MEM_COMMIT <> 0;
    end;
    
    function IsPointerToVMT(const APointer: Pointer): Boolean;
      var
      VMTPointer, VMTPointerSelf: Pointer;
    begin
      Result := False;
      if not IsMemoryCommitByAdress(APointer) then
      Exit;
      VMTPointer := APointer;
      VMTPointerSelf := Pointer(Integer(VMTPointer) + vmtSelfPtr);
      if not IsMemoryCommitByAdress(VMTPointer) then
      Exit;
      if not IsMemoryCommitByAdress(VMTPointerSelf) then
      Exit;
      if not IsMemoryCommitByAdress(PPointer(VMTPointerSelf)^) then
      Exit;
      Result := PPointer(VMTPointerSelf)^ = VMTPointer;
    end;
    
    function IsBadptr(apointer:pointer):boolean;
    begin
      Result := IsMemoryCommitByAdress(APointer) and IsPointerToVMT(PPointer(APointer)^);
    end;

    Функция, для определения качества указателя, в ситуации "один объект - несколько указателей".
    Гк в том, что нет надежности - это все равно, что юзать IsBadReadPtr и аналогичные.

    Почему-то никто не пытается использовать операторы is и as (я узнал о них благодаря Тарасу, спасибо ему), чтобы сравнить качество приведения.

    brutushafens, 19 Июня 2014

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

    +86

    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
    begin
       if CheckListBox1.checked[2] or CheckListBox1.checked[3]
        or CheckListBox2.checked[0] or CheckListBox2.checked[1] or CheckListBox2.checked[2]
        or CheckListBox3.checked[1] or CheckListBox3.checked[2]
        or CheckListBox5.checked[0] or CheckListBox5.checked[1] or CheckListBox5.checked[2]
       then Form2.Memo1.Lines.Add('Генераторы шумовых сигналов');
        if CheckListBox1.checked[2] or CheckListBox1.checked[3]
        or CheckListBox2.checked[0] or CheckListBox2.checked[1] or CheckListBox2.checked[2]
        or CheckListBox3.checked[1] or CheckListBox3.checked[2]
        or CheckListBox5.checked[0] or CheckListBox5.checked[1] or CheckListBox5.checked[2]
       then Form2.Memo1.Lines.Add('Низкочастотные генераторы сигналов');
       if CheckListBox1.checked[2] or CheckListBox1.checked[3]
        or CheckListBox2.checked[0] or CheckListBox2.checked[1] or CheckListBox2.checked[2]
        or CheckListBox3.checked[1] or CheckListBox3.checked[2]
        or CheckListBox5.checked[0] or CheckListBox5.checked[1] or CheckListBox5.checked[2]
       then Form2.Memo1.Lines.Add('Усилители мощности');
       if CheckListBox1.checked[2] or CheckListBox1.checked[3]
        or CheckListBox2.checked[0] or CheckListBox2.checked[1] or CheckListBox2.checked[2]
        or CheckListBox3.checked[1] or CheckListBox3.checked[2]
        or CheckListBox5.checked[0] or CheckListBox5.checked[1] or CheckListBox5.checked[2]
       then Form2.Memo1.Lines.Add('Акустические излучатели');
       if CheckListBox1.checked[2] or CheckListBox1.checked[3]
        or CheckListBox2.checked[0] or CheckListBox2.checked[1] or CheckListBox2.checked[2]
        or CheckListBox3.checked[1] or CheckListBox3.checked[2]
        or CheckListBox5.checked[0] or CheckListBox5.checked[1] or CheckListBox5.checked[2]
       then Form2.Memo1.Lines.Add('Измерители шума и вибраций (шумомеры)');
       if CheckListBox1.checked[0]
        or CheckListBox2.checked[0] or CheckListBox2.checked[1] or CheckListBox2.checked[2]
        or CheckListBox3.checked[1] or CheckListBox3.checked[2] or CheckListBox3.checked[0]
        or CheckListBox5.checked[0] or CheckListBox5.checked[1] or CheckListBox5.checked[2]
       then Form2.Memo1.Lines.Add('Селективные микровольтметры, измерительные приемники (анализаторы спектра)');
       if CheckListBox1.checked[0] or CheckListBox1.checked[1] or CheckListBox1.checked[2] or CheckListBox1.checked[3]
        or CheckListBox2.checked[0] or CheckListBox2.checked[1] or CheckListBox2.checked[2]
        or CheckListBox3.checked[1] or CheckListBox3.checked[3]
        or CheckListBox5.checked[0] or CheckListBox5.checked[1] or CheckListBox5.checked[2]
       then Form2.Memo1.Lines.Add('Селективные нановольтметры');
       if CheckListBox1.checked[2] or CheckListBox1.checked[2]
        or CheckListBox2.checked[0] or CheckListBox2.checked[1] or CheckListBox2.checked[2]
        or CheckListBox3.checked[1] or CheckListBox3.checked[2]
        or CheckListBox5.checked[0] or CheckListBox5.checked[1] or CheckListBox5.checked[2]
       then Form2.Memo1.Lines.Add('Измерительные микрофоны');
       if CheckListBox1.checked[0] or CheckListBox1.checked[1]
        or CheckListBox2.checked[0] or CheckListBox2.checked[1] or CheckListBox2.checked[2]
        or CheckListBox3.checked[0]
        or CheckListBox5.checked[0] or CheckListBox5.checked[1] or CheckListBox5.checked[2]
       then Form2.Memo1.Lines.Add('Измерительные антенны');
       if CheckListBox1.checked[2] or CheckListBox1.checked[3]
        or CheckListBox2.checked[0] or CheckListBox2.checked[1] or CheckListBox2.checked[2]
        or CheckListBox3.checked[1] or CheckListBox3.checked[2]
       then Form2.Memo1.Lines.Add('Вибродатчики (акселерометры)');
       if CheckListBox1.checked[0] or CheckListBox1.checked[1]
        or CheckListBox2.checked[0] or CheckListBox2.checked[1] or CheckListBox2.checked[2]
        or CheckListBox3.checked[0]
        or CheckListBox5.checked[0] or CheckListBox5.checked[1] or CheckListBox5.checked[2]
       then Form2.Memo1.Lines.Add('Измерительные пробники');
       if CheckListBox1.checked[2] or CheckListBox1.checked[3]
        or CheckListBox2.checked[0] or CheckListBox2.checked[1] or CheckListBox2.checked[2]
        or CheckListBox3.checked[1] or CheckListBox3.checked[2]
        or CheckListBox5.checked[0] or CheckListBox5.checked[1] or CheckListBox5.checked[2]
       then Form2.Memo1.Lines.Add('Полосовые октавные фильтры со среднегеометри- ческими частотами 250, 500, 1000, 2000, 4000 Гц');
       if CheckListBox1.checked[0] or CheckListBox1.checked[1]
        or CheckListBox3.checked[0]
        or CheckListBox5.checked[0] or CheckListBox5.checked[1] or CheckListBox5.checked[2]
       then Form2.Memo1.Lines.Add('Осциллографы');
     { if Checklistbox6.Checked[0] or CheckListBox3.checked[0]
        or CheckListBox4.checked[0]
      then Form2.Memo1.Lines.Add('Программные средства формирования и контроля полномочий доступа в AC'); }
     <font color="Red"> if CheckListBox2.checked[3] or CheckListBox2.checked[4]or CheckListBox2.checked[5]
        or CheckListBox3.checked[0] or CheckListBox4.checked[0]
       then Form2.Memo1.Lines.Add('Программные средства контроля целостности программ и программных комплексов');</font>

    Вот так живут Америка с Европой.
    http://www.delphisources.ru/forum/showthread.php?t=26142

    brutushafens, 11 Мая 2014

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

    +86

    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
    function RealToStr(X: Real; Count: Integer): String;//Count - количество цифр после запятой
    var S: String;
        N: Integer;
    begin
      S:=FloatToStr(X); //после запятой - длинная последовательность цифр
    //DecimalSeparator - константа, содержащая истинный разделитель целой и дробной частей числа
     N:=Pos(DecimalSeparator, S); //позиция запятой в строке
    //вычисляем длину строки с нужным количеством знаков после запятой:
      if N=0//если в строке нет запятой - это целое число, и
        then N:=Length(S)//тогда просто выводим это число
        else N:=N+Count;//иначе вычисляем длину строки
      Result:=Copy(S, 1, N);//копируем часть строки в результат
    end;

    Говно на говне сидит и говном погоняет.
    http://www.delphi-manual.ru/work-with-strings.php

    gost, 23 Марта 2014

    Комментарии (13)
  8. Куча / Говнокод #15256

    +86

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    load 'regex'
    f=: 13 : '((+./-.(1 2 3 4{y))+.(0{y))*.(5{y)'
    a =: #:i.2^6
    b =: f"(1) a
    cc =: ":|:(|:a),(|:b)
    cc1 =: (32+i.32){cc
    cc2 =: (i.32){cc
    ccc=:|:(|:cc2),(1 32$'*'),(|:cc1)
    ccc=:('\*';'&&') rxrplc"1 (ccc)
    (,&'\\ \hline')"1 (' ';' & ')rxrplc"1 (ccc)

    Вот он, первый говнокод на J

    Abbath, 28 Февраля 2014

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

    +86

    1. 1
    2. 2
    3. 3
    // сделать невидимым кол-во поиск
    if Assigned(m_DBGrid) and Assigned(m_DBGrid.DataSource) and Assigned(m_DBGrid.DataSource.DataSet) then
        TblBtnFind.Enabled := (m_DBGrid.DataSource.DataSet.RecordCount<>0);

    Petr0vi4, 19 Февраля 2014

    Комментарии (1)
  10. Pascal / Говнокод #13412

    +86

    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
    procedure TForm1.Colorize;
    procedure SetStr(var s: string; const Style: TFontStyles; const Color, BackColor: Byte);
    var
      Format: TCharFormat2;
    begin
     If s<>'' Then
      begin
        FillChar(Format, SizeOf(Format), 0);
        Format.cbSize := SizeOf(Format);
        Format.dwMask:= CFM_BACKCOLOR or CFM_COLOR;
        Format.crBackColor:= GetIRCColor(BackColor, True);
        Format.crTextColor:= GetIRCColor(Color);
        if RichEdit1.HandleAllocated then
        SendMessage(RichEdit1.Handle, EM_SETCHARFORMAT, SCF_SELECTION,
          LPARAM(@Format));
        RichEdit1.SelAttributes.Style:= Style;
        RichEdit1.SelText:= s;
        RichEdit1.SelAttributes.Assign(RichEdit1.DefAttributes);
        s:= ''
      end;
    end;
    var
      Color, BackColor: Byte;
      Style: TFontStyles;
      CurrStr: string;
      I: Integer;
    begin
      Style:= [];
      Color:= DefForeColor;
      BackColor:= DefBackColor;
      CurrStr:= '';
      I:= 0;
      While (I<Length(Str))do
       begin
        Inc(I);
        case Str[I] of
          #31:
              begin
               SetStr(CurrStr, Style, Color, BackColor);
               If fsUnderLine in Style Then
                Exclude(Style, fsUnderLine)
               else
                Include(Style, fsUnderLine);
             end;
          #2:
             begin
               SetStr(CurrStr, Style, Color, BackColor);
               If fsBold in Style Then
                Exclude(Style, fsBold)
               else
                Include(Style, fsBold);
             end;
           #15, #13:
               begin
                SetStr(CurrStr, Style, Color, BackColor);
                Color:= DefForeColor;
                BackColor:= DefBackColor;
               end;
           #3:
              begin
                SetStr(CurrStr, Style, Color, BackColor);
                Inc(I);
                Color:= DefForeColor;
                If (Str[I] in ['0', '1'..'9'])Then
                 begin
                  Color:= StrToInt(Str[I]);
                  Inc(I);
                  If (Str[I] in ['0', '1'..'9'])Then
                   begin
                     Color:= StrToInt(IntToStr(Color)+Str[I]);
                     Inc(I)
                   end;
                 end;
                 If Str[I] = ',' Then                         //BackColor
                   begin
                    BackColor:= DefBackColor;
                    Inc(I);
                    If (Str[I] in ['0', '1'..'9'])Then
                     begin
                      BackColor:= StrToInt(Str[I]);
                      Inc(I);
                      If (Str[I] in ['0', '1'..'9'])Then
                       begin
                        BackColor:= StrToInt(IntToStr(BackColor)+Str[I]);
                        Inc(I)
                       end;
                      end;
                    end;
                   Dec(I) 
              end;
           else
            CurrStr:= CurrStr+Str[I]
        end;
       end;
       SetStr(CurrStr, Style, Color, BackColor);
    end;

    Процедура раскрашивающая текст из Log-файла mIRC загруженого в TRichEdit на форме.

    function GetIRCColor(const Color: Byte; const Back: Boolean=False): TColor;
    begin
    case Color of
    0: Result:= clWhite;
    1: Result:= clBlack;
    2: Result:= clNavy;
    3: Result:= clGreen;
    4: Result:= clRed;
    5: Result:= clMaroon;
    6: Result:= clPurple;
    7: Result:= $000080FF;
    8: Result:= clYellow;
    9: Result:= clLime;
    10: Result:= clTeal;
    11: Result:= clAqua;
    12: Result:= clBlue;
    13: Result:= clFuchsia;
    14: Result:= clGray;
    15: Result:= clSilver;
    else
    begin
    If Back Then
    Result:= clWhite
    else
    Result:= clBlack
    end;
    end;
    end;

    ASNightingale, 12 Июля 2013

    Комментарии (18)
  11. Java / Говнокод #12810

    +86

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    @Override
    public boolean equals(Object obj)
    {
       return obj != null && obj.equals(this);
    }

    SSSandman, 26 Марта 2013

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