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

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

    +96

    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
    procedure TRegistry.GetKeyNames(Strings: TStrings);
    var
      Len: DWORD;
      I: Integer;
      Info: TRegKeyInfo;
      S: string;
    begin
      Strings.Clear; // Очистить список перед добавлением. Это пиздец, как важно!!! Программист не додумается сам очистить список. 
      if GetKeyInfo(Info) then
      begin
        SetString(S, nil, Info.MaxSubKeyLen + 1);
        for I := 0 to Info.NumSubKeys - 1 do
        begin
          Len := Info.MaxSubKeyLen + 1;
          RegEnumKeyEx(CurrentKey, I, PChar(S), Len, nil, nil, nil, nil);
          Strings.Add(PChar(S));
        end;
      end;
    end;

    Из registry.pas (Delphi 2009)
    Все регистровые функции зашкварены этим, не знаю, как в семерке; это значит, что в цикле их без дерьма не поюзаешь.
    Очень обидно.

    brutushafens, 26 Июня 2014

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

    +96

    1. 1
    2. 2
    var m = map[int]string { 1: "one", 2: "two", 3: "three", }
    if val, ok := m[3]; ok { fmt.Printf("Yes! %s\n",val) }	else { fmt.Println("No!") }

    Почему в Go первое присваивание надо писать через =
    А то что в if через :=
    http://ideone.com/cPf2cw
    http://ideone.com/fork/cPf2cw

    3.14159265, 01 Июня 2014

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

    +96

    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
    Var
    h : THandle;
    
    procedure TMain.FormCreate(Sender: TObject);
    
    begin
    begin
    h := CreateMutex(nil, True, PChar(ExtractFileName(Application.ExeName)));
    if WaitForSingleObject(h, 0)<>0 then
    begin
    ShowMessage(‘Программа уже запущена!’);
    Application.Terminate;
    CloseHandle(h);
    end;
    end;

    http://moron.1side.ru/programmirovanie/delphi/zapret-povtornogo-zapuska-programmy.php

    brutushafens, 02 Мая 2014

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

    +96

    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
    {$APPTYPE CONSOLE}
    uses SysUtils;
    function Add(const x: Integer; i: Integer): Integer; overload;
      begin
        Result := x + i
      end;
    
    function Add(const x: PChar; i: Integer): PChar; overload;
      var
        x1: Integer absolute x;
      begin
        Integer(Result) := x1 + i
      end;
    
    
    const s: PChar = 'KoKoKoBormondos';
    begin
      Writeln (StrLen(Add(s, 5)))
    end.

    http://govnokod.ru/15510#comment221692

    gost, 26 Марта 2014

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

    +96

    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
    99. 99
    if movcamn[1] then begin
         //
      if movcams[ 2] then begin  if Nmr= 2 then goto m1;
      if movcams[ 3] then begin  if Nmr= 3 then goto m1;
      if movcams[ 4] then begin  if Nmr= 4 then goto m1;
      if movcams[ 5] then begin  if Nmr= 5 then goto m1;
      if movcams[ 6] then begin  if Nmr= 6 then goto m1;
      if movcams[ 7] then begin  if Nmr= 7 then goto m1;
      if movcams[ 8] then begin  if Nmr= 8 then goto m1;
      if movcams[ 9] then begin  if Nmr= 9 then goto m1;
      if movcams[10] then begin  if Nmr=10 then goto m1;
      if movcams[11] then begin  if Nmr=11 then goto m1;
      if movcams[12] then begin  if Nmr=12 then goto m1;
      if movcams[13] then begin  if Nmr=13 then goto m1;
      if movcams[14] then begin  if Nmr=14 then goto m1;
      if movcams[15] then begin  if Nmr=15 then goto m1;
      if movcams[16] then begin  if Nmr=16 then goto m1;
      if movcams[17] then begin  if Nmr=17 then goto m1;
      if movcams[18] then begin  if Nmr=18 then goto m1;
      if movcams[19] then begin  if Nmr=19 then goto m1;
      if movcams[20] then begin  if Nmr=20 then goto m1;
    
      m1:   Summs1:=0;        movcams[1]:=False;   movcamn[1]:=False;
          movcam[1,1]:=False;  movcam[1,2]:=False;  movcam[1,3]:=False;  movcam[1,4]:=False;
    
            Summs2:=0;        movcams[2]:=False;   movcamn[2]:=False;
          movcam[2,1]:=False;  movcam[2,2]:=False;  movcam[2,3]:=False;  movcam[2,4]:=False;
          if Nmr=2 then goto m2;  // <---
    
            Summs3:=0;        movcams[3]:=False;   movcamn[3]:=False;
          movcam[3,1]:=False;  movcam[3,2]:=False;  movcam[3,3]:=False;  movcam[3,4]:=False;
          if Nmr=3 then goto m2;  // <---
    
            Summs4:=0;         movcams[4]:=False;   movcamn[4]:=False;
          movcam[4,1]:=False;  movcam[4,2]:=False;  movcam[4,3]:=False;  movcam[4,4]:=False;
          if Nmr=4 then goto m2;  // <---
    
            Summs5:=0;        movcams[5]:=False;   movcamn[5]:=False;
          movcam[5,1]:=False;  movcam[5,2]:=False;  movcam[5,3]:=False;  movcam[5,4]:=False;
          if Nmr=5 then goto m2;  // <---
    
            Summs6:=0;        movcams[6]:=False;   movcamn[6]:=False;
          movcam[6,1]:=False;  movcam[6,2]:=False;  movcam[6,3]:=False;  movcam[6,4]:=False;
          if Nmr=6 then goto m2;  // <---
    
            Summs7:=0;        movcams[7]:=False;   movcamn[7]:=False;
          movcam[7,1]:=False;  movcam[7,2]:=False;  movcam[7,3]:=False;  movcam[7,4]:=False;
          if Nmr=7 then goto m2;  // <---
    
            Summs8:=0;        movcams[8]:=False;   movcamn[8]:=False;
          movcam[8,1]:=False;  movcam[8,2]:=False;  movcam[8,3]:=False;  movcam[8,4]:=False;
          if Nmr=8 then goto m2;  // <---
    
            Summs9:=0;        movcams[9]:=False;   movcamn[9]:=False;
          movcam[9,1]:=False;  movcam[9,2]:=False;  movcam[9,3]:=False;  movcam[9,4]:=False;
          if Nmr=9 then goto m2;  // <---
    
                 //
            Summs10:=0;        movcams[10]:=False;   movcamn[10]:=False;
          movcam[10,1]:=False;  movcam[10,2]:=False;  movcam[10,3]:=False;  movcam[10,4]:=False;
          if Nmr=10 then goto m2;  // <---
    
            Summs11:=0;        movcams[11]:=False;   movcamn[11]:=False;
          movcam[11,1]:=False;  movcam[11,2]:=False;  movcam[11,3]:=False;  movcam[10,4]:=False;
          if Nmr=11 then goto m2;  // <---
    
            Summs12:=0;        movcams[12]:=False;   movcamn[12]:=False;
          movcam[12,1]:=False;  movcam[12,2]:=False;  movcam[12,3]:=False;  movcam[10,4]:=False;
          if Nmr=12 then goto m2;  // <---
    
            Summs13:=0;        movcams[13]:=False;   movcamn[13]:=False;
          movcam[13,1]:=False;  movcam[13,2]:=False;  movcam[13,3]:=False;  movcam[10,4]:=False;
          if Nmr=13 then goto m2;  // <---
    
            Summs14:=0;        movcams[14]:=False;   movcamn[14]:=False;
          movcam[14,1]:=False;  movcam[14,2]:=False;  movcam[14,3]:=False;  movcam[10,4]:=False;
          if Nmr=14 then goto m2;  // <---
    
            Summs15:=0;        movcams[15]:=False;   movcamn[15]:=False;
          movcam[15,1]:=False;  movcam[15,2]:=False;  movcam[15,3]:=False;  movcam[10,4]:=False;
          if Nmr=15 then goto m2;  // <---
    
            Summs16:=0;        movcams[16]:=False;   movcamn[16]:=False;
          movcam[16,1]:=False;  movcam[16,2]:=False;  movcam[16,3]:=False;  movcam[10,4]:=False;
          if Nmr=16 then goto m2;  // <---
    
            Summs17:=0;        movcams[17]:=False;   movcamn[17]:=False;
          movcam[17,1]:=False;  movcam[17,2]:=False;  movcam[17,3]:=False;  movcam[10,4]:=False;
          if Nmr=17 then goto m2;  // <---
    
            Summs18:=0;        movcams[18]:=False;   movcamn[18]:=False;
          movcam[18,1]:=False;  movcam[18,2]:=False;  movcam[18,3]:=False;  movcam[10,4]:=False;
          if Nmr=18 then goto m2;  // <---
    
            Summs19:=0;        movcams[19]:=False;   movcamn[19]:=False;
          movcam[19,1]:=False;  movcam[19,2]:=False;  movcam[19,3]:=False;  movcam[10,4]:=False;
      m2:
      end; end; end; end; end; end; end; end; end; end;   // 20 штук
      end; end; end; end; end; end; end; end; end; end;

    Попалось в одном проекте, который приходилось расчищать.
    Особенно позабавило заботливое "// 20 штук" в конце.

    qb60, 14 Февраля 2014

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

    +96

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    procedure TForm1.FormCreate(Sender: TObject);
    var formattedDateTime : string; S: TSearchRec; sf : Int64;
    begin
      Application.OnException := MyHandler;
      if IsRunningEXEName(ExtractFileName(Application.ExeName)) = true then
      begin
        Application.Terminate;
        Exit;
      end;

    Попытка запретить запуск копии программы. Неудачная.

    increazon, 09 Марта 2013

    Комментарии (26)
  8. Pascal / Говнокод #11584

    +96

    1. 1
    2. 2
    3. 3
    4. 4
    function InterlockedExchangePointer(var Target: Pointer; Value: Pointer): Pointer;
    begin
      Result := Pointer(InterlockedExchange(Integer(Target), Integer(Value)));
    end;

    Windows.pas
    facepalm.jpg
    Delphi, такой Delphi.

    HaskellGovno, 14 Августа 2012

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

    +96

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    public bool IsStandart
    {
        get { return IsStandart; }
        set { IsStandart = value; }
    }

    Maps, 31 Мая 2012

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

    +96

    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
    string AutoWait;
    int AutoStop;
    
    /*...*/
    
    RegistryKey sKey = Registry.LocalMachine.OpenSubKey("Platform\\Settings"); 
    AutoStop=(int)Key.GetValue("AutoStop");
    
    if (AutoStop == 1) { AutoWait = "yes"; wait.Enabled = false; } else { AutoWait = "no"; }
    
    /*...*/
    
                    if ((km4<=2)&(onTheWay)&(AutoWait=="yes"))
                    {
                        Waiting=true;
                        label3.BackColor = Color.Red;
                        label4.BackColor = Color.Black;
                    }else
                    if ((km4 > 2) & (onTheWay))
    
    /*...*/

    Классика жанра - использование переменной String в качестве bool. Про ООП автор вообще не слышал, весь код оформлен одной большой портянкой с кучей повторений сброса/установки подобных "флажков".

    ybinzu, 22 Мая 2012

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

    +96

    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
    private void textBox10_TextChanged(object sender, EventArgs e)
            {
            }
            private void button3_Click(object sender, EventArgs e)
            {
                textfactorname1.Text = "";
                textfactorname2.Text = "";
                textfactorname3.Text = "";
                textfactorname4.Text = "";
                textfactorname5.Text = "";
                textfactorname6.Text = "";
                textfactorname7.Text = "";
                textfactorname8.Text = "";
                textfactorname9.Text = "";
                ...
               
                checkBox9.Checked = false;
                checkBox10.Checked = false;
            }
            private void button2_Click_1(object sender, EventArgs e)
            {
                int n;
                try
                {
                    n = Convert.ToInt32(textItera.Text);
                }
                catch
                {
                    n = 1;
                }
                string results;
                double[] NPVarray = new double[n];
                double[] NPVsquares = new double[n];
                double NPVmax,NPVmin,NPVmid,disp,standdev,CV,zeropoint,pxy,xxx,yyy;
                int lessthanzero, morethanxxx, lessthanyyy;
                try
                {
                    for (int i = 0; i < n; i++)
                    {
                        string factorname1;
                       ...
                        string factorname10;
                        double fixedvalue1;
                       ...
                        double fixedvalue10;
                        double midvalue1;
                        ...
                        double midvalue10;
                        double minvalue1;
                        ...
                        double minvalue10;
                        double maxvalue1;
                        ...
                        double maxvalue10;
                        string varname1;
                       ...
                        string varname10;
                        if (textfactorname1.Text == "")
                        {
                            factorname1 = "What a fuck?";
                        }
                        else
                        {
                            factorname1 = textfactorname1.Text;
                        }
                        if (textfactorname2.Text == "")
                        {
                            factorname2 = "What a fuck?";
                        }

    Вот так вот. Лимит в 100 строк не позаоляет показать все прелести.

    tarabo, 20 Мая 2012

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