1. 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)
  2. Pascal / Говнокод #3319

    +116

    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
    for m:=0 to 9 do
          mas[m]:=inttostr(m);
      if ((Form1.edit1.text='')or(Form1.Memo2.text='')) then    begin
          if Form1.Memo2.text='' then
              ShowMessage('Ошибка! Введите пожалуйста текст или подключите файл,который необходимо расшифровать!!!');
          if Form1.edit1.text='' then
              ShowMessage('Ошибка! Введите пожалуйста ключ,которым будет расшифрован текст!!!');
        end
      else    begin
          //проверка ключа
          key:=Form1.edit1.text;
          k:=length(key);
          c:=0;
          k_p:=true;
          for j:=1 to k do
          for m:=0 to 9 do begin
              if (key[j]=mas[m]) then  
                  inc(c)
              else Begin
                  if (m=9) then
                    if (c=0) then Begin
                        ShowMessage('Ошибка!!!Введите пожалуйста ключ,которым будет расшифрован текст-целые числа');
                        k_p:=false;
                      end
                    else
                      c:=0;
                end;
            end;
        end;

    говнокриптография...

    3.14159265, 26 Мая 2010

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

    +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
    <script>                                                                                                                           
    function build_view(){
      $('div.content').append(""+  <?php $flag=false; foreach($work_meters as $work){?> "<div id=\"<?=$work->id?>\" style='margin-bottom:30px;' >  <span class=\"name\"><?=$work->name?> </span>  <div s\
    tyle=\"display:inline;float:left\" align=\"left\" >   <table class='data_table' style=\"margin-top:50px;\" id='table_<?=$work->id?>'>    <tr>    <td>дата</td><td>значение</td>"+  <?php if(in_array\
    (5, $user->roles)) { ?> "  <td></td>    "+  <?php } ?> <?php while(list($key, $vals) = each($work->data)){ ?>  "  <tr><td><?=$vals[0]?></td> <td><?=$vals[1]?></td>      "+     <?php if(in_array(5,\
     $user->roles)) { ?>        "    <td><a onclick=\"delete_row(<?=$key?>, <?=$work->id?>)\" href='javascript:void(0);'>удалить</a></td>       "+    <?php } ?>  "     </tr>   "+        <?php } ?>"   \
    </tr>     "+  <?php if(in_array(5, $user->roles)) { ?>  "  <tr><td><input type='text' name='date' size='7'/></td><td><input type='text' name='value' size='5'/></td><td><input type='button' value='\
    добавить' onclick='add_data(<?=$work->id?>, $(this).parent().parent());'></td></tr>       <tr><td colspan='3' style='text-align:right;'><input type='button' onclick='save(<?=$work->id?>);' value='\
    сохранить'></td></tr>       "+  <?php } ?>  "  </table> </div>  <div style=\"width:600px;height:300px;margin-left:120px;\" class=\"image\">     </div>  <div class=\"description\" style='margin-top\
    =10px;'>    <?=$work->description?> </div>  </div>"+        <?php $flag = true;} ?>"" );
      }
    </script>

    эта ересь генерирует html для javascript функции которая втсавляет это всё в страницу.

    Arnial, 26 Мая 2010

    Комментарии (12)
  4. PHP / Говнокод #3317

    +157

    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
    /**********************************************************************
    		*  Connect to DB - over-ridden by specific DB class
    		*/
    
    		function connect()
    		{
    			die(EZSQL_CORE_ERROR);
    		}
    
    		/**********************************************************************
    		*  Select DB - over-ridden by specific DB class
    		*/
    
    		function select()
    		{
    			die(EZSQL_CORE_ERROR);
    		}
    
    		/**********************************************************************
    		*  Basic Query	- over-ridden by specific DB class
    		*/
    
    		function query()
    		{
    			die(EZSQL_CORE_ERROR);
    		}
    
    		/**********************************************************************
    		*  Format a string correctly for safe insert - over-ridden by specific
    		*  DB class
    		*/
    
    		function escape()
    		{
    			die(EZSQL_CORE_ERROR);
    		}
    
    		/**********************************************************************
    		*  Return database specific system date syntax
    		*  i.e. Oracle: SYSDATE Mysql: NOW()
    		*/
    
    		function sysdate()
    		{
    			die(EZSQL_CORE_ERROR);
    		}

    Продвинутый способ создания абстрактных методов. Это кагбе абстрактный класс, от которого наследуются БД-специфичные классы. Затем какая вам БД нужна, под такую руками и создавайте экземпляр нужного класса, "фабрикой" даже и не пахнет.
    Зовётся сие чудо ezSQL. Используется в NetCat. Ладно хоть не сами наложили (налажали?), но всё ж головой не подумали, когда брали.

    telnet, 26 Мая 2010

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

    +164

    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
    // set admin mode
    switch (true) {
      case $nc_core->inside_admin:
        $nc_core->admin_mode = true;
      break;
      case !$passed_thru_404 && isset($posting): // add (edit) action
        $nc_core->admin_mode = $admin_mode;
      break;
      case !$passed_thru_404: //front-office
        $nc_core->admin_mode = true;
      break;
      case $passed_thru_404:
        $nc_core->admin_mode = false;
      break;
      default:
        $nc_core->admin_mode = false;
    }

    /netcat/require/index.php
    Что они там курят, что у них настолько извилины выпрямляются?!

    telnet, 26 Мая 2010

    Комментарии (56)
  6. PHP / Говнокод #3315

    +167

    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
    <?
    error_reporting(0);
    $b=array("Калининград","Вологда","Далматово","Дмитров","Архангельск","Владивосток","Краков");
    
    //конкурсный код:
    //begin
    for($i=0;$i<7;$i++){$s.="for(\$z[$i]=0;\$z[$i]<7;\$z[$i]++)";$n.="\$z[$i],";$q.="\$b[\$z[$i]],";}$f='for($i=0;$i<7;$i++){$l[$i]=strlen($b[$i])-1;$c[$i]=strtolower($b[$i]);for($j=0;$j<7;$j++)if($i!=$j&&$b[$i][$l[$i]]==strtolower($b[$j][0]))$e[$i]=true;}'.$s.'{$y=array('.$n.');sort($y);if($y==array(0,1,2,3,4,5,6)){$d=true;for($i=0;$i<6;$i++)if($d&&$c[$z[$i]][$l[$z[$i]]]!=$c[$z[$i+1]][0]&&($e[$z[$i]]||$c[$z[$i]][$l[$z[$i]]-1]!=$c[$z[$i+1]][0]))$d=!$d;if($d)$a=array('.$q.');}}';eval($f);
    //end
    print_r($a);
    
    
    
    echo "<br />";
    echo "<br />";
    
    
    
    //тоже самое в нормальном виде:
    
    for($i=0;$i<7;$i++)
    {
      $l[$i]=strlen($b[$i])-1;
      $c[$i]=strtolower($b[$i]);
      for($j=0;$j<7;$j++)  
      {
        if($i!=$j && $b[$i][$l[$i]]==strtolower($b[$j][0]))
        {
          $ecantUsePrelast[$i] = true;
        }
      }
    };
     
      for($z[0]=0;$z[0]<7;$z[0]++)
        for($z[1]=0;$z[1]<7;$z[1]++)
          for($z[2]=0;$z[2]<7;$z[2]++)
            for($z[3]=0;$z[3]<7;$z[3]++)
              for($z[4]=0;$z[4]<7;$z[4]++)
                for($z[5]=0;$z[5]<7;$z[5]++)
                  for($z[6]=0;$z[6]<7;$z[6]++)
                  {
                    $y=array($z[6],$z[5],$z[4],$z[3],$z[2],$z[1],$z[0]);
                    sort($y);
                    if($y==array(0,1,2,3,4,5,6))
                    {
                      $dcorrect=true;
                      for($i=0;$i<6;$i++)                    
                        if($dcorrect && $c[$z[$i]][$l[$z[$i]]]!=$c[$z[$i+1]][0] && ($ecantUsePrelast[$z[$i]] || $c[$z[$i]][$l[$z[$i]]-1]!=$c[$z[$i+1]][0]))
                          $dcorrect=!$dcorrect;
                      if($dcorrect)
                      {
                        $a=array($b[$z[0]],$b[$z[1]],$b[$z[2]],$b[$z[3]],$b[$z[4]],$b[$z[5]],$b[$z[6]]);
                      }
                    }
                  }    
           
     
    print_r($a);
    
    ?>

    Чтобы немного развеять "академическую" атмосферу на сайте, мы решили провести конкурс в стиле Code Golf (написать программное решение задачи, использовав минимальное количество символов)

    Задание: написать программу для игры «в города».

    На вход подается массив вида

    [Калининград, Вологда, Алматы, Дмитров, Архангельск, Тобольск, Краков]

    На выходе.

    [Архангельск, Краков, Вологда, Алматы , Тобольск, Калининград, Дмитров]

    xytop, 26 Мая 2010

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

    +120

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    if (!isset($f_i[$i]))
    {
    
    echo $f_i[$i],"<br>";
    }
    }

    Vasiliy, 26 Мая 2010

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

    +129

    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
    @echo off
    if exist 3.txt del 3.txt
    : begin
    if "%1"=="" goto end
    echo %1 >> 3.txt
    copy 3.txt "%1" >4.txt
    shift
    goto begin
    : end
    dir *. /O-S /B  
    del *.
    del 3.txt
    del 4.txt

    Batch файл под DOS, студенческое задание было: написать *.bat файл, который выводит список аргументов в обратном порядке, например, на команду foo.bat qwe sdf fgh ty должен быть ответ ty fgh sdf qwe. Как-то не додумался я прибавлять аргументы в обратном порядке. и придумал, как это сделать средствами бат файла.

    dj_quake, 26 Мая 2010

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

    +153

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    bool ChatHandler::HandleNpcYellCommand(const char* args)
    {      
    
    if (!*args)
    return false;
    ...
    }

    hromjo, 25 Мая 2010

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

    +98

    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
    //это как бы сортировка приоритетов
    Try
    Prior1:=StrToInt(Edit1.Text);
    Prior2:=StrToInt(Edit2.Text);
    Prior3:=StrToInt(Edit3.Text);
    Prior4:=StrToInt(Edit4.Text);
    Prior5:=StrToInt(Edit5.Text);
    except
    ShowMessage('Íåâåðíî çàäàíû ïðèîðèòåòû');   exit;
    end;
    min1:=100;
    If prior1<min1 then begin min1:=prior1; nmin1:=1; end;
    If prior2<min1 then begin min1:=prior2; nmin1:=2; end;
    If prior3<min1 then begin min1:=prior3; nmin1:=3; end;
    If prior4<min1 then begin min1:=prior4; nmin1:=4; end;
    If prior5<min1 then begin min1:=prior5; nmin1:=5; end;
    min2:=100;
    If (prior1<min2)and(prior1>min1) then begin min2:=prior1; nmin2:=1; end;
    If (prior2<min2)and(prior2>min1) then begin min2:=prior2; nmin2:=2; end;
    If (prior3<min2)and(prior3>min1) then begin min2:=prior3; nmin2:=3; end;
    If (prior4<min2)and(prior4>min1) then begin min2:=prior4; nmin2:=4; end;
    If (prior5<min2)and(prior5>min1) then begin min2:=prior5; nmin2:=5; end;
    min3:=100;
    If (prior1<min3)and(prior1>min2) then begin min3:=prior1; nmin3:=1; end;
    If (prior2<min3)and(prior2>min2) then begin min3:=prior2; nmin3:=2; end;
    If (prior3<min3)and(prior3>min2) then begin min3:=prior3; nmin3:=3; end;
    If (prior4<min3)and(prior4>min2) then begin min3:=prior4; nmin3:=4; end;
    If (prior5<min3)and(prior5>min2) then begin min3:=prior5; nmin3:=5; end;
    min4:=100;
    If (prior1<min4)and(prior1>min3) then begin min4:=prior1; nmin4:=1; end;
    If (prior2<min4)and(prior2>min3) then begin min4:=prior2; nmin4:=2; end;
    If (prior3<min4)and(prior3>min3) then begin min4:=prior3; nmin4:=3; end;
    If (prior4<min4)and(prior4>min3) then begin min4:=prior4; nmin4:=4; end;
    If (prior5<min4)and(prior5>min3) then begin min4:=prior5; nmin4:=5; end;
    min5:=100;
    If (prior1<min5)and(prior1>min4) then begin min5:=prior1; nmin5:=1; end;
    If (prior2<min5)and(prior2>min4) then begin min5:=prior2; nmin5:=2; end;
    If (prior3<min5)and(prior3>min4) then begin min5:=prior3; nmin5:=3; end;
    If (prior4<min5)and(prior4>min4) then begin min5:=prior4; nmin5:=4; end;
    If (prior5<min5)and(prior5>min4) then begin min5:=prior5; nmin5:=5; end;
    
    //далее горы подобного кода (где-то 20-30 страниц):
    hile t<=60 do begin
    Application.ProcessMessages;
    
    t:=t+1;
    Sleep(100);
    
        If nmin1=1 then begin
    
        If t-tpi1=t1 then begin
        i1:=i1+1;
        datetime:=now;
    x1:=random(311)/10+29+random(10)/10;
    table1.Insert;
    table1.FieldByName('znachenie').AsFloat:=x1;
    table1.FieldByName('datchik').AsInteger:=1;
    table1.FieldByName('oshibka').AsBoolean:=False;
    table1.FieldByName('krit').AsBoolean:=False;
    table1.FieldByName('DateTime').AsDateTime:=Datetime;
    series1.AddXY(i1, x1, '',clred);
    if (x1>60)or(x1<30) then
    begin
    table1.FieldByName('oshibka').AsBoolean:=True;
      if (x1>60.5)or(x1<29.5) then begin
      table1.FieldByName('krit').AsBoolean:=True;
      Label1.Visible:=True;
      end;
    end;
    table1.Post;
    tpi1:=t;
    end; //end if
    
    end;
    If nmin1=2 then begin
    
       If t-tpi2=t2 then begin
       i2:=i2+1;
       datetime:=now;
    x2:=random(211)/10+9+random(10)/10;
    table1.Insert;
    table1.FieldByName('znachenie').AsFloat:=x2;
    table1.FieldByName('datchik').AsInteger:=2;
    table1.FieldByName('oshibka').AsBoolean:=False;
    table1.FieldByName('krit').AsBoolean:=False;
    table1.FieldByName('DateTime').AsDateTime:=Datetime;
    series2.AddXY(i2, x2, '',clgreen);
    if (x2>30)or(x2<10) then
    begin
    table1.FieldByName('oshibka').AsBoolean:=True;
      if (x2>30.5)or(x2<9.5) then begin
      table1.FieldByName('krit').AsBoolean:=True;
      Label1.Visible:=True;
      end;
    end;
    table1.Post;
    tpi2:=t;
    end;

    курсовая работа одного студента (идущего на красный диплом, кстати)

    GovnocoderJr, 25 Мая 2010

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