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

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

    +124

    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
    switch ((int)row["State"])
              {
                case 0:
                  /*** Get Contact Row for Company ***/
                  if (contactTbl != null)
                  {
                    contactRow = null;
                    DataRow[] contactRows = contactTbl.Select("Company_Id='" + row["Id"].ToString() + "'");
                    if (contactRows != null && contactRows.Length > 0)
                    {
                      contactRow = contactRows[0];
                      if ((bool)contactRow["fDontMailshot"] == false)
                      {
                        thisMailShot = true;
                      }
                      else
                      {
                        thisMailShot = false;
                      }
                    }
                  }
    
                  if ((bool)row["fManagementCompany"] == true)
                  {
                    if (row["Id"].ToString() == "00-20181" || row["Id"].ToString() == "00-60838")
                    {
                      myEntityID = Entity(2, row);
                      if (!SubContractor(myEntityID, row)) { return false; }
                    }
                    else
                    {
                      myEntityID = Entity(10, row);
                    }
                    if (myEntityID < 0) { return false; }
                    if (!Address(myEntityID, row)) { return false; }
                    if (!Contact(myEntityID, contactRow, SOURCETYPE_ENTITY)) { return false; }
                  }
                  else if ((bool)row["fSubcontractor"] == true || ((bool)row["fSupplier"] == true && (bool)row["fCustomer"] == false))
                  {
                    myEntityID = Entity(2, row);
                    if (myEntityID < 0) { return false; }
                    if (!Address(myEntityID, row)) { return false; }
                    if (!Contact(myEntityID, contactRow, SOURCETYPE_ENTITY)) { return false; }
                    if (!SubContractor(myEntityID, row)) { return false; }
                  }
                  else if ((bool)row["fHousingAssociation"] == true)
                  {
                    myEntityID = Entity(7, row);
                    if (myEntityID < 0) { return false; }
                    if (!Address(myEntityID, row)) { return false; }
                    if (!Contact(myEntityID, contactRow, SOURCETYPE_ENTITY)) { return false; }
                    if (!Customer(myEntityID, row, thisMailShot)) { return false; }
                  }
                  else if ((bool)row["f2ndOwnerTenant"] == true && (bool)row["fCustomer"] == false)
                  {
                    myEntityID = Entity(8, row);
                    if (myEntityID < 0) { return false; }
                    if (!Address(myEntityID, row)) { return false; }
                    if (!Contact(myEntityID, contactRow, SOURCETYPE_ENTITY)) { return false; }
                    if (!Customer(myEntityID, row, thisMailShot)) { return false; }
                  }
                  else if ((bool)row["fCustomer"] == true && (bool)row["f2ndOwnerTenant"] == false)
                  {
                    myEntityID = Entity(7, row);
                    if (myEntityID < 0) { return false; }
                    if (!Address(myEntityID, row)) { return false; }
                    if (!Contact(myEntityID, contactRow, SOURCETYPE_ENTITY)) { return false; }
                    if (!Customer(myEntityID, row, thisMailShot)) { return false; }
                  }
                  else if ((bool)row["fCustomer"] == true && (bool)row["f2ndOwnerTenant"] == true)
                  {
                    myEntityID = Entity(7, row);
                    if (myEntityID < 0) { return false; }
                    if (!Address(myEntityID, row)) { return false; }
                    if (!Contact(myEntityID, contactRow, SOURCETYPE_ENTITY)) { return false; }
                    if (!Customer(myEntityID, row, thisMailShot)) { return false; }
                  }
                  break;
                default:
                  break;
              }

    Отличный пример использования конструкций ветвления. Имеем switch, в нём один case, а в кейсе много-много иф-элсов. И что очень характерно для этого проекта с тремя классами по 9000 строк, никакого повторного использования кода. Реализация принципа "зачем писать меньше?".

    Progreso, 26 Мая 2010

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

    +103

    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
    var
      resStream: TResourceStream;
      memStream: TMemoryStream;
      DLL: THandle;
      tempFile: string;
    
      excel: variant;
      wbook: OLEVariant;
    begin
      if not IsOLEObjectInstalled('Excel.Application') then
        begin
          MessageBox(Handle, PChar('Для открытия фаблонов форм необходимо установить'+#13+
                                   'Microsoft Excel'), 'Ошибка загрузки формы.', MB_ICONINFORMATION);
          exit
        end;
      tempFile := extractFilePath(paramStr(0))+'DATA\PLUGINS\$temp$.xxx';
      if ListView1.Selected = nil then exit;
      if not FileExists(ListView1.Selected.SubItems.Strings[2]) then exit;
      DLL := loadLibrary(PChar(ListView1.Selected.SubItems.Strings[2]));
      if DLL = INVALID_HANDLE_VALUE then begin
                                           freeLibrary(DLL);
                                           exit
                                         end;
      resStream := TResourceStream.Create(DLL, 'FORMA', MakeIntResource(10));
      memStream := TMemoryStream.Create;
      memStream.LoadFromStream(resStream);
      if fileExists(tempFile) then deleteFile(tempFile);
      memStream.SaveToFile(tempFile);
      setFileAttributes(PChar(tempFile), FILE_ATTRIBUTE_HIDDEN or
                                         FILE_ATTRIBUTE_TEMPORARY);
      memStream.Free;
      resStream.Free;
      freeLibrary(DLL);
    
      excel := createOLEObject('Excel.Application');
      excel.Visible := TRUE;
      wbook := excel.Workbooks.Open(tempFile)
    end;

    когда-то кому-то в дипломнике вот такое написал. с понтом - подключаем плагины и они в эксель выводят программно новые виды форм. хотя экселевский файл тупо вкомпилен в ресурс библиотеки

    ganja_boy, 24 Мая 2010

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

    +113

    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
    private static void assertNoReflection()
    {
        foreach (StackFrame stackFrame in new StackTrace().GetFrames())
        {
            if (stackFrame.GetMethod().DeclaringType.Namespace == "System.Reflection")
            {
                throw new MethodAccessException();
            }
        }
    }
    
    internal static string GetKey()
    {
        assertNoReflection();
    
    // ...
    }

    Вот так вот приходится говнить, потому что в дотнете рефлексией можно спокойно вызывать internal- и private- методы.
    assertNoReflection(); проверяет, что вверх по стеку вызовов никто не балуется рефлексией.
    После assertNoReflection(); из нативной длл получаем обфусцированную (вручную, лол) строку, которая далее с помощью запутанных алгоритмов (некоторые параметры для "расшифровки" опять берутся из нативной длл) приводит её в вид пароля (для доступа к запароленному архиву).
    Софт не прямо уж суперсекретный, просто нужно скрыть ресурсы хотя бы для приличия. Пароль через подключение к серверу не катит.
    Ко всему этому оно собрано в одно exe моновским mkbundle'ом (рефлектор не может открыть!) и поверх upx'ом. В общем, большое количество кулхацкеров отсекается (должны знать ассемблер и MSIL).
    Чувствую, что говнорешение, но не могу придумать что-то более умное. Обфускаторы тоже не очень катят, ибо плохо дружат с моно.

    cfdev, 18 Мая 2010

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

    +971

    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
    #include<stdio.h>
    #include<stdlib.h>
    #define N 3
    using namespace std;
    /*class Node{
    struct Node *f,*s,*t;
    public :
    int x,y;
    
    void Node(int rx,int ry){
    x=rx;
    y=ry;
    return;
    }
    
    };*/
    
    typedef struct node{int x,y}node;
    node tree[100];
    node jmps[3];
    
    
    int main(){
    // Node *root=new Node(-1,-1);
    int i=0,j;
    ////////////////////////
    
    
    ////////////////////////
    tree[0].x=-1;
    tree[0].y=-1;
    
     for(i=0;i<N;i++){
    	for(j<N*)
     
     }
    
    }

    KOLANICH, 14 Мая 2010

    Комментарии (10)
  6. bash / Говнокод #3223

    −130

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    #!/bin/bash
    
    curl http://www.radioroks.com.ua/online.php | grep '<b>' > /tmp/roks
    
    sed -e 's/<[^>]*>//g' /tmp/roks > /tmp/roks2
    sed -e 's/&middot;/- /g' /tmp/roks2 > /tmp/roks
    sed -e 's/\t//g' /tmp/roks > /tmp/roks2
    
    sed -e 's/\:-/\:\
    -/g' /tmp/roks2 > /tmp/roks
    
    cat /tmp/roks | head -n $1

    Кажется, писал под утро. Не вдуплился юзать только 1 файл, а жонглировал /tmp/roks и /tmp/roks2 ...

    Anderson, 14 Мая 2010

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

    +165

    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
    //--------------- Функция подсчета карт в игре ---------------//
    function cards_score($str){
    if($str==1||$str==2||$str==3||$str==4){
    $num = 6;
    }
    if($str==5||$str==6||$str==7||$str==8){
    $num = 7;
    }
    if($str==9||$str==10||$str==11||$str==12){
    $num = 8;
    }                
    if($str==13||$str==14||$str==15||$str==16){
    $num = 9;
    }                
    if($str==17||$str==18||$str==19||$str==20){
    $num = 10;
    }                
    if($str==21||$str==22||$str==23||$str==24){
    $num = 2;
    }                
    if($str==25||$str==26||$str==27||$str==28){
    $num = 3;
    }                      
    if($str==29||$str==30||$str==31||$str==32){
    $num = 4;
    }                      
    if($str==33||$str==34||$str==35||$str==36){
    $num = 11;
    }                      
    return $num;
    }
    
    
    //--------------- Функция подсчета очков в игре ---------------//
    function cards_points($str){
    $str=(int)$str;    
    $points = ' очков';
    if($str==2||$str==3||$str==4||$str==22||$str==23||$str==24|$str==32||$str==33||$str==34){$points = ' очка';}
    if($str==21){$points = ' <b>очко!!!</b>';}
    if($str==31){$points = ' очко';}
    return $str.$points;
    } 
    
    //--------------- Функция вывода статуса ---------------//
    function user_ststuses($balls) {
    
    $text = file_get_contents(DATADIR."status.dat"); 
    if ($text!=""){
    $udta = explode("|",$text);}
    if($balls>=0 && $balls<5){$statuses=$udta[0];}
    if($balls>=5 && $balls<10){$statuses=$udta[1];}    
    if($balls>=10 && $balls<20){$statuses=$udta[2];}
    if($balls>=20 && $balls<50){$statuses=$udta[3];}
    if($balls>=50 && $balls<100){$statuses=$udta[4];}
    if($balls>=100 && $balls<250){$statuses=$udta[5];}    
    if($balls>=250 && $balls<500){$statuses=$udta[6];}
    if($balls>=500 && $balls<750){$statuses=$udta[7];}
    if($balls>=750 && $balls<1000){$statuses=$udta[8];}
    if($balls>=1000 && $balls<1250){$statuses=$udta[9];}
    if($balls>=1250 && $balls<1500){$statuses=$udta[10];}
    if($balls>=1500 && $balls<1750){$statuses=$udta[11];}
    if($balls>=1750 && $balls<2000){$statuses=$udta[12];}
    if($balls>=2000 && $balls<2250){$statuses=$udta[13];}
    if($balls>=2250 && $balls<2500){$statuses=$udta[14];}
    if($balls>=2500 && $balls<2750){$statuses=$udta[15];}
    if($balls>=2750 && $balls<3000){$statuses=$udta[16];}
    if($balls>=3000 && $balls<3250){$statuses=$udta[17];}
    if($balls>=3250 && $balls<3499){$statuses=$udta[18];}
    if($balls>=3500 && $balls<4999){$statuses=$udta[19];}
    if($balls>=5000 && $balls<7499){$statuses=$udta[20];}
    if($balls>=7500 && $balls<9999){$statuses=$udta[21];}
    if($balls>=10000){$statuses=$udta[22];}
    $statuses=check($statuses);
    
    return $statuses;
    }

    3 сорца отсюда http://visavi.net/load/zip.php?act=preview&id=988&view=854&star t=840&

    This is obvious, 07 Мая 2010

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

    +98

    1. 1
    dmauto.tout.FieldByName('nomer').AsString:=       inttostr(inc(strtoint(dmauto.tout.FieldByName('nomer').AsString)));

    max4d, 05 Мая 2010

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

    −105

    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
    ''' <summary>
    	''' Функция взятия запроса как инструкции t/sql; рекордсет возвращается в виде oZap(,).
    	''' </summary>
    	''' <param name="eConnectString">Строка подключения к БД из списка.</param>
    	''' <param name="sText">Инструкция t/sql.</param>
    	''' <param name="oErr">Необязательная ошибка.</param>
    	''' <param name="oZap">Необязательный двумерный массив, содержащий рекордсет ― 1-ю таблицу датасета.</param>
    	''' <param name="iTimeout">Необязательное число секунд таймаута запроса.</param>
    	''' <returns>Число затронутых строк в таблице БД; если ноль, то нормально ещё, а если -1, то запрос не прошёл, если -2, то соединение не установилось.</returns>
    	''' <remarks>
    	''' </remarks>
    	''' <history>
    	''' 	[Max Pro]	11.04.2007	Created
    	''' 	[Max Pro]	08.08.2008	Реабилитировал OleDb.
    	''' 	[Max Pro]	08.04.2009	Оптимизировал как надо ReDim Preserve и переполнение Integer.
    	''' 	[Max Pro]	27.08.2009	Исправил ошибку ReDim Preserve ― было больше на 1 элемент.
    	''' </history>
    	''' -----------------------------------------------------------------------------
    	Public Function iZap(ByVal eConnectString As ConnectString, ByVal sText As String, Optional ByRef oErr As Exception = Nothing, Optional ByRef oZap(,) As Object = Nothing, Optional ByVal iTimeout As Integer = -1) As Integer
    		'#region "var"
    		Dim iX As Integer
    		Dim lY As Long
    		Dim lYTemp As Long
    		Dim i As Integer
    		Dim iZapTemp As Integer
    		'var zap
    		Dim sConnectString As String = sConStrFromEnum(eConnectString)
    		Dim oConnection
    		Dim oCommand
    		Dim oReader
    		'#end region 'var
    		'#region ini
    		If sConnectString Like "*sqloledb*" Then
    			oConnection = New OleDbConnection
    			oCommand = New OleDbCommand
    		Else
    			oConnection = New SqlConnection
    			oCommand = New SqlCommand
    		End If
    		'#end region 'ini
    		iZap = -2
    		oErr = New Exception
    		oConnection.ConnectionString = sConnectString
    		Try
    			'попытка открытия соединения
    			oConnection.Open()
    			If oConnection.State Then iZap = -1 'if <>0
    			'присвоение параметров команды
    			If iTimeout >= 0 Then oCommand.CommandTimeout = iTimeout
    			oCommand.CommandType = CommandType.Text
    			oCommand.Connection = oConnection
    			oCommand.CommandText = sText
    			'попытка выполнения команды
    			oReader = oCommand.ExecuteReader()
    			iZap = 0
    			iX = oReader.FieldCount - 1
    			lY = -1
    			lYTemp = 255
    			ReDim oZap(iX, lYTemp)
    			While oReader.Read()
    				lY += 1
    				If lY < Integer.MaxValue Then				 '2 147 483 647-1(заменил <= на < чтобы число элементов iZap не зашкалило).
    					iZapTemp = lY + 1
    					If lY > lYTemp Then
    						lYTemp += 256
    						ReDim Preserve oZap(iX, lYTemp)
    					End If
    					For i = 0 To iX
    						If IsDBNull(oReader(i)) Then oZap(i, lY) = Nothing Else oZap(i, lY) = oReader(i)
    					Next i
    				End If
    			End While
    			oReader.Close()
    			oReader = Nothing
    			oCommand = Nothing
    			iZap = iZapTemp
    			ReDim Preserve oZap(iX, iZapTemp - 1)
    			If lY >= Integer.MaxValue Then
    				oErr = New Exception(lY.ToString("# ##0") & " строк >=" & Integer.MaxValue & " (Integer.MaxValue), но массив заполнен до предела Int32 и iZap=Integer.MaxValue.")
    			End If
    		Catch oError As Exception
    			oErr = oError
    		Finally
    			If IsNothing(oConnection) = False Then
    				oConnection.Close()
    				oConnection = Nothing
    			End If
    		End Try
    	End Function	  'iZap

    А так Максим Прохоров выполняет запросы. слабо?

    ursus, 23 Апреля 2010

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

    +908

    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
    template <typename Handler>
      void start_connect_op(socket_type descriptor,
          per_descriptor_data&, Handler handler)
      {
        boost::asio::detail::mutex::scoped_lock lock(mutex_);
        if (!shutdown_)
        {
          boost::shared_ptr<bool> completed(new bool(false));
          connect_handler_wrapper<Handler> wrapped_handler(
              descriptor, completed, *this, handler);
          bool interrupt = write_op_queue_.enqueue_operation(
              descriptor, wrapped_handler);
          interrupt = except_op_queue_.enqueue_operation(
              descriptor, wrapped_handler) || interrupt;
          if (interrupt)
            interrupter_.interrupt();
        }
      }

    Как дико зафрагментировать кучу?!
    Столько хороших идей и так много говнокода в реализации.
    //boost::shared_ptr<bool> completed(new bool(false)); - это один из шедевров кривокодирования!!!

    mock, 22 Апреля 2010

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

    +84

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    public void setPhones(List<PhoneNumber> phones) throws Exception {
        this.phones = phones;
        this.phones.clear();
        this.phones.addAll(phones);
    }

    Вот такой метод нашёл сегодня в коде.

    asolntsev, 21 Апреля 2010

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