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

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

    +12

    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
    #include <iostream>
    
    namespace dynamic {
    
    template <class T> class scope;
    template <class T> class variable {
    public:
        variable() : initial(0), current(&initial) {}
        variable(const T &val) : initial(val, 0), current(&initial) {}
        operator T() { return current->val; }
        const T & operator = (const T & new_val) {
            return current->val = new_val;
        }
    private:
        struct node {
            node(node *prev) : val(), prev(prev) {}
            node(const T &val, node *prev) : val(val), prev(prev) {}
            T val;
            node *prev;
        };
        node initial;
        node *current;
        friend class scope<T>;
    };
    
    template <class T> class scope {
    public:
        scope(variable<T> &var) : var(var), node(var.current) {
            var.current = &node;
        }
        scope(variable<T> &var, const T &val) : var(var), node(val, var.current) {
            var.current = &node;
        }
        ~scope() {
            var.current = node.prev;
        }
    private:
        variable<T> &var;
        typename variable<T>::node node;
    };
    
    }
    
    
    dynamic::variable<int> x(100500);
    
    void foo() {
        std::cout << x << std::endl;
    }
    
    void bar() {
        dynamic::scope<int> x_(x, 42);
        foo();
        x = 265;
        foo();
    }
    
    int main() {
        foo();
        bar();
        foo();
        return 0;
    }

    Навеяно http://govnokod.ru/12993.

    https://ideone.com/7AA33Q

    bormand, 14 Мая 2013

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

    +89

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    public void render(){
    	for(int y = 0; y < height; y++){
    		if(y < 0 || y >= height) break;
    		for(int x = 0; x < width; x++){
    			if(x < 0 || x >= width) break;
    			int tileIndex = (x >> 4) + (y >> 4) * 64;
    			pixels[x + y * width] = tiles[tileIndex];
    		}
    	}
    }

    чтоб уж наверняка
    http://www.youtube.com/watch?v=uPkXZmOuqGI

    lowercase, 08 Мая 2013

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

    +13

    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
    struct read_access_tag {};
    struct write_access_tag {};
    struct read_write_access_tag : read_access_tag, write_access_tag {};
    
    template <
        typename ByteOrder,
        typename ValueType
    >
    std::size_t get_from(const uint8_t *src, ValueType &dst, const read_access_tag&) {
        ByteOrder::decode(src, dst);
        return sizeof(dst);
    }
    
    template <
        typename ByteOrder,
        typename ValueType
    >
    std::size_t put_into(ValueType src, uint8_t *dst, const write_access_tag&) {
        ByteOrder::encode(src, dst);
        return sizeof(src);
    }
    
    // ...
    
    template <
        typename ByteOrder = default_byte_order,
        typename AccessTag = read_write_access_tag
        >
    class basic_buffer {
    public:
        typedef ByteOrder byte_order;
        typedef AccessTag access_tag;
        typedef typename access_traits<access_tag>::value_type value_type;
        typedef typename access_traits<access_tag>::strict_type strict_type;
        typedef typename access_traits<access_tag>::iterator iterator;
        typedef typename access_traits<access_tag>::const_iterator const_iterator;
    
        basic_buffer(iterator begin, iterator end)
            : begin_(begin)
            , end_(end)
            , pos_(begin)
        {}
    
        // ...
    
        template <typename T>
        basic_buffer & put(T value) {
            if (bytes_left() < sizeof(value)) throw Overflow;
            pos_ += put_into<byte_order>(value, pos_, access_tag());
            return *this;
        }
    
        template <typename T>
        basic_buffer & get(T &value) {
            if (bytes_left() < sizeof(value)) throw Overflow;
            pos_ += get_from<byte_order>(pos_, value, access_tag());
            return *this;
        }
    }

    Развитие идей из

    http://govnokod.ru/12465
    Изобретаем права доступа в compile time, чтобы можно было запретить писать в readonly-буфер и читать из writeonly-буфера без дупликации кода. put_into по сути не нужен (запись в readonly_buffer у меня и без этого не скомпилится), существует из соображений симметрии. Полный код здесь
    https://github.com/roman-kashitsyn/encoding-binary

    roman-kashitsyn, 28 Апреля 2013

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

    +131

    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
    class Date
        {
            private DateTime date;
            public Date(int day,int month,int year)
            {
                if(month > 0 && month < 13 && day > 0 && day <= DateTime.DaysInMonth(year,month)) // Это не надо, моё введение.
                    date = new DateTime(year,month,day);
                else Console.WriteLine("Неверная дата.");//
            }
            public Date()
            {
                date= new DateTime(2009,01,01);
            }
            public DateTime Yesterday()
            {
                return date.AddDays(-1);
            }
            public DateTime NextDay()
            {
                return date.AddDays(1);
            }
            public int Days()
            {
                return DateTime.DaysInMonth(date.Year,date.Month)-date.Day;
            }
            public DateTime GetDate
            {
                get
                {
                    return date;
                }
                set
                {
                    date = value;
                }
            }
            public bool IsLeapYear
            {
                get
                {
                    return DateTime.IsLeapYear(date.Year);
                }
            }
        }

    Пришлось сделать.

    dos_, 27 Апреля 2013

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

    +144

    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
    <?php
    $db=$_COOKIE['db'];
    $tbn=$_REQUEST['tb_s'];
    include('conf.php');
    mysql_select_db($db);
    echo '<h4 class="nr">'.$db.'.'.$tbn.'</h4><hr>';
    $q=mysql_query("SHOW COLUMNS FROM ".$tbn."");
    echo "<table border='1' class='t'><tr>";
    while($ntb=mysql_fetch_row($q)){
    echo "<td class='gr'>".$ntb['0']."</td>";
    }
    echo '</tr>';
    $query=mysql_query("SELECT * FROM ".$tbn."");
    while($row=mysql_fetch_array($query)){
    $qq=mysql_query("SHOW COLUMNS FROM ".$tbn."");
    echo '<tr>';
    while($ntb=mysql_fetch_row($qq)){
    $u=$ntb[0];
    echo '<td>'.$row[$u].'</td>';
    }
    echo '</tr>';
    }
    echo '</table><hr>';
    echo"<a href='s_db.php?db_s=".$_SESSION['db']."'>Bepнyтcя к тaблицaм</a>";
    ?>

    Мой дебют здесь)оцените говнокодность,+комменты))

    AnalgiNNN, 27 Апреля 2013

    Комментарии (11)
  7. JavaScript / Говнокод #12906

    +162

    1. 1
    var days_in_april = 32 - new Date(2013, 3, 32).getDate();

    Получаем число дней в месяце.

    А что, менее черезжопинским вариантом этого сделать никак?

    vse_govno, 17 Апреля 2013

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

    +148

    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
    if(!empty($_POST['Order']['tp1'])) {
        $step3_arr['tp1'] = intval($_POST['Order']['tp1']);
    }
    
    if(!empty($_POST['Order']['tp2'])) {
        $step3_arr['tp2'] = intval($_POST['Order']['tp2']);
    }
    
    if(!empty($_POST['Order']['tp3'])) {
        $step3_arr['tp3'] = intval($_POST['Order']['tp3']);
    }
    
    if(!empty($_POST['Order']['tp4'])) {
        $step3_arr['tp4'] = intval($_POST['Order']['tp4']);
    }
    
    if(!empty($_POST['Order']['eggs1'])) {
        $step3_arr['eggs1'] = intval($_POST['Order']['eggs1']);
    }
    
    if(!empty($_POST['Order']['eggs2'])) {
        $step3_arr['eggs2'] = intval($_POST['Order']['eggs2']);
    }
    
    if(!empty($_POST['Order']['eggs3'])) {
        $step3_arr['eggs3'] = intval($_POST['Order']['eggs3']);
    }
    
    if(!empty($_POST['Order']['eggs4'])) {
        $step3_arr['eggs4'] = intval($_POST['Order']['eggs4']);
    }

    Форма заказа. это только часть длинного листинга if-ов :).

    oxser, 16 Апреля 2013

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

    +159

    1. 1
    if (!is_array($array)) {$array = array($array)}

    partizan22, 14 Апреля 2013

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

    +147

    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
    <?/**
        * Возвращаем все товары по фильтру
        * @author Алексей Чигинцев
        * Доработал и убрал участки еблизма: Арбора Сергей
    	* Почувствовал, что могу все улучшить, но все разъебал еще хуже чем было изначально: Влад Черноскутов
        * Ниче не знаю техничкой роблю: Алексей MOSkvin
        * имхо: Вадим стиль руки хуй
        * @param array $options - список используемых параметров
        * @return array|false - массив товаров либо false
        */
        function getGoodsFilter($options = array(),$_FILTER) {
          	$price_expr = '`price`';$_sub = $_out = array();$sql = $_sub_child = '';
            $cat = new Catalog(self::$db);
            $cat->load();
            $filter_query = self::parseFilterQuery($_FILTER);
            if ($options['SS'] && (!$options['first'] && !$options['second'] && !$options['last']))
            {//получаем всех детей
                $_sub_child = $cat->get_child(41);        
                if($options['id_man'][0]!=''){$whereand1 = $filter_query;}else{$whereand1 ="";}
                if($options['sort_type']){$order1 = ' ORDER BY `'.$options['sort_field'].'` '.$options['sort_type'];
                } else {$order1 =""; }
                if (!empty($_sub_child)){$i=0;
                	foreach ($_sub_child as $v){
    	                if($i<count($_sub_child)-1){$_sub_chil .= $v.','; $i++; }else{$_sub_chil .= $v; }}
    	                if($whereand1!=""){$_sub[] = self::$db->resultAsArray('SELECT * FROM `'.self::$table.'` WHERE `is_dollar`= "0" `cid` IN('.$_sub_chil .') '.$whereand1.$order1);
                    }else{$_sub[] = self::$db->resultAsArray('SELECT * FROM `'.self::$table.'` WHERE `is_dollar`= "0" cid` IN('.$_sub_chil .') AND name` LIKE "%'.mysql_real_escape_string($options['SS']).'%" '.$order1
                    	);}}
                if ($_sub){ foreach($_sub as $v){if (!empty($v)){ 
                    		foreach ($v as $v_child){ 
                                $_out[$v_child['id']] = $v_child; 
                    }}}}
                if (!empty($_out)) return $_out;
                    else return false;
            }elseif ($options['SS'] && ($options['first'] || $options['second'] || $options['last']))    
                { 	$whereand1 = "";
                    if($options['id_man'][0]){$whereand1 = $filter_query;}
                    if($options['sort_type']){
                    $order1 = ' ORDER BY `'.$options['sort_field'].'` '.$options['sort_type'];}else{$order1 ="";}    
                    $_where_price = false;
                    if ($options['last']){switch ($options['last']){
                        case 1: $_where_price .= ' '.$whereand1.'AND ((`is_dollar`=0 AND (`price` > 0 AND `price` <= 25000)) OR (`is_dollar`=1 AND (`price` > 0 AND `price` <= '.__dollar(25000).'))) '.$order1; break;
                        case 2: $_where_price .= ' '.$whereand1.'AND ((`is_dollar`=0 AND (`price` > 25000 AND `price` <= 50000)) OR (`is_dollar`=1 AND (`price` > '.__dollar(25000).' AND `price` <= '.__dollar(50000).'))) '.$order1; break;
                        case 3: $_where_price .= ' '.$whereand1.'AND ((`is_dollar`=0 AND `price` > 50000) OR (`is_dollar`=1 AND (`price` > '.__dollar(50000).')))'.$order1; break;
                        default: $where_price = false; break;
                    }}$_sub_child = $cat->get_child($options['first']);
                        if (!$_sub_child){$_out = self::$db->resultAsArray('SELECT * FROM `'.self::$table.'` WHERE 
    	                                    `name` LIKE "%'.mysql_real_escape_string($options['SS']).'%" 
    	                                    AND `is_dollar`= "0" AND  `cid`='.intval($options['first']).' 
    	                                ' . ($options['second'] ? ' AND `id_man`='.intval($options['second']).' ' : '') . '
    	                                ' . ($_where_price ? $_where_price : '') . ''.$whereand1.$order1);
                            if (!empty($_out)) return $_out;else return false;
                        }else{foreach ($_sub_child as $v){
                                    $_sub[] = self::$db->resultAsArray('SELECT * FROM `'.self::$table.'` WHERE 
                                        `name` LIKE "%'.mysql_real_escape_string($options['SS']).'%" 
                                        AND `is_dollar`= "0"  AND  `cid`='.intval($v).' 
                                    ' . ($options['second'] ? ' AND `id_man`='.intval($options['second']).' ' : '') . '
                                    ' . ($_where_price ? $_where_price : '') . '');
                                }if ($_sub){foreach ($_sub as $v){if (!empty($v)){
                                            foreach ($v as $v_child){   
                                            	$_out[$v_child['id']] = $v_child; 
                                        	}}}}
                                if (!empty($_out)) return $_out;else return false;
                    }}elseif (!$options['SS'] && ($options['first'] || $options['second'] || $options['last'])){
                            $_where_price = false;$whereand1 = "";
                            if($options['id_man'][0]){$whereand1 = $filter_query;}
                            if($options['sort_type']){$order1 = ' ORDER BY CAST(`' .$options['sort_field'].'` AS SIGNED) '.$options['sort_type'];}else{$order1 ="";}        
    						if ($options['last']){switch ($options['last']){
                                    case 1: $_where_price .= ' '.$whereand1.'AND (`is_dollar`=1 AND (`price` > 0 AND `price` <= '.__dollar(25000).')) '; break;
    								case 2: $_where_price .= ' '.$whereand1.'AND (`is_dollar`=1 AND (`price` > '.__dollar(25000).' AND `price` <= '.__dollar(50000).')) '; break;
    								case 3: $_where_price .= ' '.$whereand1.'AND (`is_dollar`=1 AND (`price` > '.__dollar(50000).'))'; break;
                                    default: $where_price = false; break;
                            }}
                            //получаем детей для $options['first'] - если дети есть ищем по их массиву
                            $_sub_child = $cat->get_child($options['first']);
                        }else return false;}

    Работаю в веб-студии, расклад такой:
    1) Чувак-извращенец как-то поднял сайт с фильтром по каталогу, уволился.
    2) Пришел второй чувак, ему поручили фикс этого творения - сломал все что работало.
    3) Пришел я, починил все необычными костылями, вроде как работало
    4) Пришел еще один чувак, доработал до мульти выбора в фильтре)) - все слетело, поставил мега крутые костыли, они и представлены
    5) Пришел очередной чувак и порешал все, терь работает, но все костыли живут и будут жить))))))

    arbora, 10 Апреля 2013

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

    +132

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    </head>
    <script type="text/javascript">
    	$(document).ready(function() {
                ...
    	});
    </script>	
    <body>

    Не до, и не после - между блять!

    deep, 10 Апреля 2013

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