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

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

    +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
    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
    public static string Handle(System.Exception exception)
            {
                try
                {
                    throw exception;
                }
                catch (System.Net.WebException ex)
                {
                    ...
                }
                catch (System.Web.Services.Protocols.SoapHeaderException ex)
                {
                    ...
                }
                catch (System.Web.Services.Protocols.SoapException ex)
                {
                    ...
                }
                catch (ArgumentNullException ex)
                {
                    ...
                }
                catch (NullReferenceException ex)
                {
                    ...
                }
                catch (Exception ex)
                {
                    ...
                }
            }

    кусок кода в чужом проекте, который сейчас допиливаю :(

    shtaff, 19 Января 2012

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

    +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
    //Рекурсивная функция цепной проверки категории
    	function category(){
    		static $category;
    		static $level=0;
    		$myrow = mysql_query("SELECT id,pot_category FROM categroy WHERE sysname='".$_GET['do'][$level]."'");
    		if(mysql_num_rows($myrow)){
    		$result = mysql_fetch_assoc($myrow);
    		if($result['no_viev']==0){
    		if($result['sysname']==end($_GET['do'])){
    			return 'category';
    			}else{
    				$level++;
    				$this->category();
    				}
    				}else{return 'no_viev';}
    		}else{
    			//Если категории не найдено то показываем ошибку 404
    			return FALSE;}
    		
    		}

    Бессмысленная рекурсия

    lans8097, 16 Января 2012

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

    +136

    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
    static BOOL CALLBACK callbackEspecial(
      LPSTR aModuleName,
      DWORD aModuleBase,
      ULONG aModuleSize,
      PVOID aUserContext)
    {
        BOOL retval = TRUE;
        DWORD addr = *(DWORD*)aUserContext;
    
        /*
         * You'll want to control this if we are running on an
         *  architecture where the addresses go the other direction.
         * Not sure this is even a realistic consideration.
         */
        const BOOL addressIncreases = TRUE;
    
        /*
         * If it falls inside the known range, load the symbols.
         */
        if (addressIncreases
           ? (addr >= aModuleBase && addr <= (aModuleBase + aModuleSize))
           : (addr <= aModuleBase && addr >= (aModuleBase - aModuleSize))
            ) {
            retval = _SymLoadModule(GetCurrentProcess(), NULL, aModuleName, NULL, aModuleBase, aModuleSize);
        }
    
        return retval;
    }

    аццкая адресация
    http://mozilla-thunderbird.sourcearchive.com/documentation/1.5.0.10-0ubuntu3/nsStackFrameWin_8cpp-source.html

    63F45EF45RB65R6VR, 10 Января 2012

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

    +122

    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
    while (!requestedTermination)
    {
        // ...
        // тут  130 строк кода...
        // ...
    
        if (requestedTermination)
        {
            break;
        }
        else
        {
            // to prevent excess CPU usage
            Thread.Sleep(100);
        }
    }

    requestedTermination - Property, изменяемое другим потоком

    Мораль: не пишите длинные циклы - к концу цикла забудете, какое у него было условие завершения.

    burdakovd, 16 Декабря 2011

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

    −114

    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
    -- Я ТУТ ИСПОЛЬЗУЮ 2 КУРСОРА, 
    -- причем 2рой вызывается изнутри первого, 
    -- причем этот 2рой курсор ПОЛНОСТЬЮ (в худшем случае) 
    -- перебирает все свои значения, чтобы подставить одно.
    
    -- ВОПРОС: как сделать так, чтоб работало так же, но чтоб не так яро грузилось???
    
    DECLARE 
      CURSOR get_col1 IS
        SELECT DISTINCT 
    	a.constraint_name, 
      a.constraint_type,
      a.table_name,
      a.r_constraint_name,
      b.column_name
        FROM all_constraints a, all_cons_columns b
        WHERE a.table_name = b.table_name
      AND a.constraint_type in ('P', 'R')
      AND a.constraint_name = b.constraint_name
        ORDER by 1;
      
      CURSOR get_col2 IS
        SELECT constraint_name, table_name, column_name 
        FROM all_cons_columns
        WHERE constraint_name in 
              (select r_constraint_name 
               from all_constraints 
               where constraint_type = 'R');
        
    BEGIN
      dbms_output.ENABLE;
      dbms_output.put_line(rpad('Имя ограничения', 30)
                ||rpad('Тип', 5)
                ||rpad('Имя столбца', 30)
                ||rpad('Имя таблицы', 30)
                ||rpad('Имя таблицы', 30)
                ||rpad('Имя столбца', 30));
      dbms_output.put_line(rpad('-', 155, '-'));
      
      FOR main_col IN get_col1 LOOP
        dbms_output.put(rpad(to_char(main_col.constraint_name), 30)
          ||rpad(to_char(main_col.constraint_type), 5)
          ||rpad(to_char(main_col.column_name), 30)
          ||rpad(to_char(main_col.table_name), 30));
        
        IF (main_col.constraint_type = 'R') THEN
          
             FOR sec_col IN get_col2 LOOP
                  
                  IF (main_col.r_constraint_name = sec_col.constraint_name) THEN
                    
                    dbms_output.put(rpad(to_char(sec_col.table_name), 30)
                                       ||rpad(to_char(sec_col.column_name), 30));
                  END IF;
                  
             END LOOP;
        
        END IF;
        
        dbms_output.new_line();  
      END LOOP;
    END;
    /

    7. Используя сведения из представлений словаря данных получить
    информацию о первичных и внешних ключах схемы: Номер по порядку,
    Имя ограничения целостности, Тип, Имя столбца, Имя таблицы.
    Кроме того, для внешних ключей указать Имя таблицы и Имя столбца
    на которые ссылаются эти ключи.

    kikis, 13 Декабря 2011

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

    +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
    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
    class PAGING
    {
      var $sql,$records,$pages;
      var $page_no,$total,$limit,$first,$previous,$next,$last,$start,$end;
      function PAGING($sql,$records=9,$pages=5)
      {   global $mysqli;
        if($pages%2==0) $pages++;
        $res = $mysqli->query($sql);
        $sqlquery++;
        $total=mysqli_num_rows($res);
        $page_no=isset($_GET["p"])?$_GET["p"]:1;
        $limit=($page_no-1)*$records;
        $sql.=" limit $limit,$records";
        $first=1;
        $previous=$page_no>1?$page_no-1:1;
        $next=$page_no+1;
        $last=ceil($total/$records);
        if($next>$last)
          $next=$last;
        $start=$page_no;
        $end=$start+$pages-1;
        if($end>$last)
          $end=$last;
        if(($end-$start+1)<$pages)
        {
          $start-=$pages-($end-$start+1);
          if($start<1)
            $start=1;
        }
        if(($end-$start+1)==$pages)
        {
          $start=$page_no-floor($pages/2);
          $end=$page_no+floor($pages/2);
          while($start<$first)
          {
            $start++;
            $end++;
          }
          while($end>$last)
          {
            $start--;
            $end--;
          }
        }
        $this->sql=$sql;
        $this->records=$records;
        $this->pages=$pages;
        $this->page_no=$page_no;
        $this->total=$total;
        $this->limit=$limit;
        $this->first=$first;
        $this->previous=$previous;
        $this->next=$next;
        $this->last=$last;
        $this->start=$start;
        $this->end=$end;
      }
      function show_paging($url,$params=""){...}
    }

    Вот так вот товарищ пейджинг организует ООО)

    aleXoid, 13 Декабря 2011

    Комментарии (12)
  8. SQL / Говнокод #8796

    −120

    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
    CASE
    	WHEN plandata - begindata = 40000.000000 THEN 4
    	WHEN plandata - begindata = 1090000.000000 THEN 16
    	WHEN plandata - begindata = 2090000.000000 THEN 24
    	WHEN plandata - begindata = 90000.000000 THEN 8
    	WHEN plandata - begindata = 50000.000000 THEN 4
    	WHEN plandata - begindata = 20000.000000 THEN 2
    	WHEN plandata - begindata = 1070000.000000 THEN 14
    	WHEN plandata - begindata = 70000.000000 THEN 6
    	WHEN plandata - begindata = 3090000.000000 THEN 32
    	WHEN plandata - begindata = 4090000.000000 THEN 40
    	WHEN plandata - begindata = 5090000.000000 THEN 48
    	WHEN plandata - begindata = 6090000.000000 THEN 56 
    	WHEN plandata - begindata = 70000.000000 THEN 6
    	WHEN plandata - begindata = 10000.000000 THEN 1
    	WHEN plandata - begindata = 1040000.000000 THEN 12
    	WHEN plandata - begindata = 2040000.000000 THEN 20
    	WHEN plandata - begindata = 3040000.000000 THEN 28
    	WHEN plandata - begindata = 4040000.000000 THEN 36
    	WHEN plandata - begindata = 7040000.000000 THEN 44
    	WHEN plandata - begindata = 8040000.000000 THEN 52
    	WHEN plandata - begindata = 7090000.000000 THEN 48
    	WHEN plandata - begindata = 970000.000000 THEN 10
    	WHEN plandata - begindata = 100000.000000 THEN 9
    	WHEN plandata - begindata = 30000.000000 THEN 3
    END AS TIME

    Вычисляется плановое время выполнения задачи. begindata и plandata поля DATETIME, время начала и завершения операции

    dr_Lev, 11 Декабря 2011

    Комментарии (12)
  9. Ruby / Говнокод #8792

    −101

    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
    def type
        return 'Anonymous'   if self.builtin == BUILTIN_ANONYMOUS
        return 'Non Member'  if self.builtin == BUILTIN_NON_MEMBER
        return 'Member'      if self.builtin == BUILTIN_MEMBER
        return 'User'        if self.builtin == BUILTIN_USER
        return 'Manager'     if self.builtin == BUILTIN_MANAGER
        return 'Architect'   if self.builtin == BUILTIN_ARCHITECT
        return 'Designer'    if self.builtin == BUILTIN_DESIGNER
        return 'Customer'    if self.builtin == BUILTIN_CUSTOMER
        return 'Vendor'      if self.builtin == BUILTIN_VENDOR
        return 'Dealer'      if self.builtin == BUILTIN_DEALER
      end
    
      def require_name
        return 'is_anonymous'   if self.builtin == BUILTIN_ANONYMOUS
        return 'is_non_member'  if self.builtin == BUILTIN_NON_MEMBER
        return 'is_member'      if self.builtin == BUILTIN_MEMBER
        return 'is_user'        if self.builtin == BUILTIN_USER
        return 'is_manager'     if self.builtin == BUILTIN_MANAGER
        return 'is_architect'   if self.builtin == BUILTIN_ARCHITECT
        return 'is_designer'    if self.builtin == BUILTIN_DESIGNER
        return 'is_customer'    if self.builtin == BUILTIN_CUSTOMER
        return 'is_vendor'      if self.builtin == BUILTIN_VENDOR
        return 'is_dealer'      if self.builtin == BUILTIN_DEALER
      end

    еще ниже в модели

    opak, 10 Декабря 2011

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

    +161

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    function GetBasketUserID($bSkipFUserInit = False)
    {
    		$bSkipFUserInit = ($bSkipFUserInit ? True : False);   //  <----это зачем вообще надо
    
    		if (!array_key_exists("SALE_USER_ID", $_SESSION))
    			$_SESSION["SALE_USER_ID"] = 0;
    
    		CSaleBasket::Init(false, $bSkipFUserInit);
    
    		return $_SESSION["SALE_USER_ID"];
    }

    Стандартная функция модуля интернет-магазина в битригзе. Наткнулся во время поиска неуловимого бага, из-за которого пришлось лезть в кишки CMS

    forkhammer, 01 Декабря 2011

    Комментарии (12)
  11. Си / Говнокод #8700

    +113

    1. 1
    if (args.first ? 1 : 0 + args.second ? 1 : 0 + args.third ? 1 : 0 > 1)

    vayerx, 01 Декабря 2011

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