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

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

    +168

    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
    ...
            echo '<td width="219" height="18" class="lnk" ><a href="?ierh=6&cat=i_octa">'.gettags("str_octa").'</a></td>';
            echo '</tr>';
            echo '<tr>';
            echo '<td width="219" height="18" class="lnk" ><a href="?ierh=6&cat=i_accident">'.gettags("str_sluch").'</a></td>';
            echo '</tr>';
            echo '<tr>';
            echo '<td width="219" height="18" class="lnk" ><a href="?ierh=6&cat=i_travel">'.gettags("str_travel").'</a></td>';
            echo '</tr>';
            echo '<tr>';
            echo '<td width="219" height="18" class="lnk" ><a href="?ierh=6&cat=i_history">'.gettags("str_history").'</a></td>';
            echo '</tr>';
            echo '<tr>';
            echo '<td width="219" height="8" class="lnk"><img src="images/spacer.gif" width="10" height="8" /></td>';
            echo '</tr>';
            echo '</table>';
            echo '</DIV>';
            echo '<!---  end of left menu area ---></td></tr>';
            break;        
    // Spravochniki    
        case 7:
            echo '<td width="5"   bgcolor="#FFFFFF"><img src="images/spacer.gif" width="5" height="700" /></td>';
            echo '<td width="219" valign="top" ><!---  left area --->';
            echo '<table width="219" height="100%" border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF">';
            echo '<tr>';
            echo '<td width="219" height="89"><!---  left menu area --->            <DIV class="left-menu">';
            echo '<table width="219" cellpadding="0" cellspacing="0" class="left-menu" border="0">';
            echo '<tr>';
            echo '<td width="219" height="27" background="images/LMenuBG.gif" class="txtTitleWhite">'.gettags("spr_notarius").'</td>';
            echo '</tr>';
            echo '<tr>';
            echo '<td width="219" height="3" class="lnk"><img src="images/spacer.gif" width="10" height="3" /></td>';
            echo '</tr>';
            echo '<tr>';
            echo '<td width="219" height="18" class="lnk" ><a href="?ierh=7&cat=s_help">'.gettags("spr_nothelp").'</a></td>';
            echo '</tr>';
            echo '<tr>';
            echo '<td width="219" height="18" class="lnk" ><a href="?ierh=7&cat=s_functions">'.gettags("spr_funct").'</a></td>';
            echo '</tr>';
            echo '<tr>';
            echo '<td width="219" height="18" class="lnk" ><a href="?ierh=7&cat=s_when">'.gettags("spr_notwhen").'</a></td>';
            echo '</tr>';
            echo '<tr>';
            echo '<td width="219" height="27" background="images/LMenuBG.gif" class="txtTitleWhite">'.gettags("spr_zemsl").'</td>';
    ...

    Переделываем сайт одной компании. Пока суд да дело, их "текущий" сайт переехал к нам на хостинг. Из любопытства залез в код.
    Лучше бы я этого не делал.
    Собственно, ЭТО (и сотни, если не тысячи строк в том же духе) и выводят все странички.

    havelock, 12 Сентября 2011

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

    +98

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    for j:=k+1 to n+1 do
    	begin
    	r:=a[j,k]/a[k,k];
    	for i:=k to n do
                    begin
                    a[j,i]:=power(((a[j,i]-r*a[k,i]):a[i,j]),a[j,i]);
                    end;

    К сожалению, я уже забыл, какой идентификатор что значит :(
    Придется переписывать.

    Lioncure, 12 Сентября 2011

    Комментарии (23)
  4. Java / Говнокод #7567

    +78

    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
    public class LoadManager
    {
        public static Integer DEFAULT_MAX_LOAD_COUNTER = 2;
    
        private ConcurrentHashMap<Class, Integer> loadCounters = new ConcurrentHashMap<Class, Integer>();
    
        public void incLoadCounter(Class clazz)
        {
            synchronized (loadCounters)
            {
                if (!loadCounters.containsKey(clazz))
                {
                    loadCounters.put(clazz, 0);
                }
    
                if (loadCounters.get(clazz) <= DEFAULT_MAX_LOAD_COUNTER)
                {
                    loadCounters.put(clazz, loadCounters.get(clazz) + 1);
                }
            }
        }
    
        public void testLoadCounterAndWait(Class clazz)
        {
            synchronized (loadCounters)
            {
                if (!loadCounters.containsKey(clazz))
                {
                    loadCounters.put(clazz, 0);
                }
            }
            
            try
            {
                while (loadCounters.get(clazz) > DEFAULT_MAX_LOAD_COUNTER)
                {                
                    Thread.sleep(3000L + (long)Math.floor(5000 * Math.random()));
                }
            }
            catch (InterruptedException e) {}        
        }
    
        public void decLoadCounter(Class clazz)
        {
            synchronized (loadCounters)
            {
                if (!loadCounters.containsKey(clazz))
                {
                    loadCounters.put(clazz, 0);
                }
    
                if (loadCounters.get(clazz) > 0)
                {
                    loadCounters.put(clazz, loadCounters.get(clazz) - 1);
                }
            }
        }
    }

    Наверное, нужно было вот это: http://download.oracle.com/javase/1,5.0/docs/api/java/util/concurrent/Semaphore.html
    Ну и ещё порадовал способ постановки потоков в "очередь".

    konsoletyper, 17 Августа 2011

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

    +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
    private SqlConnection SqlConnection;
    private SqlTransaction SqlTransaction;
    private SqlCommand SqlCommand;
    private SqlDataReader SqlDataReader;
    
    protected void BtnRegister_Click(object sender, EventArgs e)
    {
    using(SqlConnection connection = new SqlConnection())
    {
    if(textBoxUsername != null)
    {
    if(textBoxPassword != null)
    {
    if(textBoxCountry !=null)
    {
    if(textBoxCity !=null)
    {
    SqlCommand.CommandText = "INSERT INTO SiteDB (Username, Password, Email, City, Country)"+
       "VALUES ('textBoxUsername', 'textBoxPassword', 'textBoxCountry', 'textBoxCity')";
    SqlCommand.ExecuteNonQuery;
    }
    }
    }
    }
    }
    }

    Прислали недавно пример кода вместе с резюме на поизицию ASP.NET Developper.

    IJobs, 06 Августа 2011

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

    +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
    case ColorChunkStart of  
       0 : result := RGB(255,   
                         (255 div ColorChunk) * ColorChunkIndex,   
                         0);   
       1 : result := RGB(255 - (255 div ColorChunk) * ColorChunkIndex,   
                         255,   
                         0);   
       2 : result := RGB(0, 255, (255 div ColorChunk) * ColorChunkIndex);   
       3 : result := RGB(0,   
                         255 - (255 div ColorChunk) * ColorChunkIndex,   
                         255);   
       4 : result := RGB((255 div ColorChunk) * ColorChunkIndex,   
                         0,   
                         255);   
       5 : result := RGB(255,   
                         0,   
                         255 - (255 div ColorChunk) * ColorChunkIndex);   
      else  
        if WrapToRed <> false then  
          result := RGB(255, 0, 0) else  
          result := RGB(255, 0, 255);   
    end;{Case}

    Говно?

    Fai, 02 Августа 2011

    Комментарии (23)
  7. Куча / Говнокод #7230

    +132

    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
    open System.Net
    open System.Text.RegularExpressions
    open System.Text
    open System
    
    type userInfo = 
        { User : string;
          Rating : double;}
    
    let  mutable Users  = []
    
    (* Заполняем списки юзверей *)
    let getUsersInfo s = 
        let mutable  m = Regex.Match(s, @">(?<user>[^<]+)</a></td>\s+<td class=""strength"">[^<]+</td>\s+<td class=""rating""><strong>(?<rating>[^<]+)") //+ Оптимизировать регулярку. (Page 2)
        while(m.Success) do
            let info = {User = m.Groups.["user"].Value;  Rating =  m.Groups.["rating"].Value |> double}
            Users <- Users @ [info]
            m <- m.NextMatch()
        
    (* скачивание страницы по индексу *)
    let getSourceForUsers p = 
        let url = "http://freehabr.ru/people/good/page" + string(p)
        let wc = new WebClient();
        let s = wc.DownloadString(url);
        printfn "Разобрана %i страница" p
        getUsersInfo s
    
    (* получить индекс последней страницы *)    
    let getLastPage =  
        let wc = new WebClient()
        wc.Encoding <- Encoding.UTF8
        let s = wc.DownloadString "http://freehabr.ru/people/"
        Regex.Match(s,@"(?<=e)\d+(?=/"">п)").Value |> int
    
    let lastPage = getLastPage
    
    let printList a =
        a |> List.iter (fun x -> printfn "%s рейтинг - %.2f" x.User x.Rating)
        Console.ReadKey() |> ignore
     
    [<EntryPoint>]
    let main(args:string[]) =
      printfn "Парсер юзерей с положительным (или нулевым) рейтингом"
      printfn "%i -- Количество страниц" lastPage
      printfn "scan --XX - __ Cбор списка пользователей от первой страницы до XX"
      printfn "scan --YY --XX __ Сбор списка пользователей от YY страницы до XX. \nXX не может быть больше, чем максимальное количество страниц в списках юзеров с положительной кармой"
    
      let userInput = Console.ReadLine();
      match userInput with
      | _ when userInput.StartsWith "scan --" -> let a = Regex.Split(userInput,"--")
                                                 let dig = a.[1] |> int
                                                 if a.Length = 2 then  // для первого варианта                                               
                                                    [1 .. dig] 
                                                    |> List.iter getSourceForUsers
                                                 else // для второго
                                                    [ dig .. a.[2] |> int ] 
                                                    |> List.iter getSourceForUsers
                                                 printfn "~~~\nЮзеры посчитаны"
                                                    
                                              
      | _ -> printfn "Завершение приложения"
             exit(1) 
      
      printfn "~~~~\nОбработка списка\n~~~~"
      printfn "usersGreaterRate --XX __ Показать пользователей,\nу которых рейтинг больше или равен XX"
      printfn "usersLessRate --XX __ Показать пользователей,\nу которых рейтинг меньше или равен XX"
      printfn "usersWithNamesBegins --String __ Показать пользователей,\nу которых имя начинается со строки String"
      let usersOper = Console.ReadLine()
      let param = Regex.Split(usersOper," --").[1] 
      match usersOper with
      | _ when usersOper.StartsWith "usersGreaterRate --" -> Users 
                                                             |> List.filter (fun x -> x.Rating > (param |> double))
                                                             |> printList
      | _ when usersOper.StartsWith "usersLessRate --" -> Users
                                                          |> List.filter (fun x -> x.Rating < (param |> double))
                                                          |> printList
      | _ when usersOper.StartsWith "usersWithNamesBegins --" -> Users
                                                                    |> List.filter (fun x -> x.User.StartsWith param)
                                                                    |> printList
      | _ -> printfn "Завершение приложения"
             exit(1) 
      0

    qbasic, 12 Июля 2011

    Комментарии (23)
  8. PHP / Говнокод #7098

    +147

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    private function _fileExists($file)
    {
        if(file_exists(self::FILE_PATH . $file)) {
            return true;
        }
        return false;
    }

    Нашел в одном из проектов.

    cartman, 28 Июня 2011

    Комментарии (23)
  9. PHP / Говнокод #6959

    +162

    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
    public function save() {
            try {
                try {
                    $this->create();
                } catch (Exception $e) {
                    //probably dulplicate
                    $this->update();
                }
            } catch (Exception $e) {
                logger::error($e);
            }
    
        }

    try-catch много не бывает

    super, 15 Июня 2011

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

    +158

    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
    //Отображеие меню
    	$arr = get("select max(depth) as d from ".DP."docs");
    	$to = $arr[0]['d'];
    
    	$a = get("select * from ".DP."docs where depth='0' order by prior");
    	$arr = $a;
    	for($i=0;$i<=$to;$i++)
    	{
    		$a = get("select * from ".DP."docs where depth='".$i."' order by prior");
    		if(is_array($a))
    		foreach($a as $key=>$value)
    		{
    			$b = array();$af = array();$bf = array();
    			$b = get("select * from ".DP."docs where pid='".$a[$key]['id']."' order by prior");
    			if(!$b)$b = array();
    			$before = true;
    			//поиск в массиве
    			foreach($arr as $key2=>$value2)
    			{
    				if($arr[$key2]['id'] != $a[$key]['id'] and $before) $bf[] = $arr[$key2];
    				if($arr[$key2]['id'] == $a[$key]['id'] ){ $bf[] = $arr[$key2]; $before=false;}
    				if($arr[$key2]['id'] != $a[$key]['id'] and !$before) $af[] = $arr[$key2];
    			}
    			$arr = array_merge($bf,$b,$af);
    		}
    	}

    построение дерева сайта. хотя может я не разобрался, весь код пестрит такими перлами.

    com1, 12 Июня 2011

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

    +126

    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
    FileStream fsSource = new FileStream(fileName, FileMode.Open, FileAccess.Read);
    
    byte[] b = new byte[8192];
    int[] a = new int[4096];
    
    fsSource.Read(b, 0, 8192);
    
    int sum=0;
    int elem;
    for (int i = 0; i < 4096; i++)
    {
    elem = b[i * 2] * 256 + b[i*2+1];
    a[i] = elem; //раз уж нам всё равно надо заполнять этот массив, то мы его заполним
    sum += elem;
    }

    задача: считать 2-х байтные числа с бинарного файла и посчитать его сумму.

    slirx, 12 Июня 2011

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