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

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

    +142

    1. 1
    this.reparent = function (new_parent) {var el = this.element; el.parentNode.removeChild(el); new_parent.appendChild(el);}

    Наткнулся в старом, но ещё работающем коде. Может быть, это даже я написал. Надеюсь, что нет.
    …Нет, похоже, всё-таки не я. Я бы не назвал класс подсвеченного элемента hilited, даже десять лет назад. Похоже, это босс писал.

    torbasow, 27 Апреля 2015

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

    +141

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    public function createAdvertApart () { // ВНИМАНИЕ! Видимость функции protected
    
    // проверяем max размер допустимый к загрузке
    			if ( $_files[size] > 3000000 )
    			$error[] = "Файл превышает размер три мегабайта";

    Прислали вместе с резюме пример кода, а там ...

    kolko91, 24 Апреля 2015

    Комментарии (3)
  4. Python / Говнокод #18050

    −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
    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
    class Column(object):
        """
            Элемент конфигурации
        """
        def __init__(self, *args, **kwargs):
    
            hid = False
            filters = []
            sorters = []
    
            if len(args) == 3:
                inner_name, verbose_name, width = args
            elif len(args) == 2:
                inner_name, verbose_name = args
                width = 20
            elif len(args) == 4:
                inner_name, verbose_name, width, hid = args
            elif len(args) == 5:
                inner_name, verbose_name, width, hid, filters = args
            elif len(args) == 6:
                inner_name, verbose_name, width, hid, filters, sorters = args
    
            special_attrs = ['locked', 'editable']
    
            self.code = inner_name
            self.name = verbose_name
            self.width = width
            self.hidden = hid
            self.idx = 0
            if sorters:
                sorters.column = self
            if filters:
                filters.column = self
                filters.code = self.code
    
            #здесь хранятся экземпляры фильтров для колонок
            self.filters = filters
            #здесь хранятся экземпляры сортировщиков для колонок
            self.sorters = sorters
    
        def get_config(self):
            ''' ?
            '''
            config = dict()
            config['data_index'] = self.code
            config['header'] = self.name
            config['width'] = self.width
            config['hidden'] = self.hidden
    
            return config

    Разбор параметров

    pycz, 23 Апреля 2015

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

    −158

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    Процедура ПриОткрытии()
        Если РольДоступна("ЗапретНаИспользованиеОбработкиПоискИЗаменаДублирующихсяЭлементов") Тогда
            ЭтаФорма.Закрыть();
        КонецЕсли;
    КонецПроцедуры

    Забрал у пользователя права на использование поиска и замены дублирующихся элементов.
    Зато быстро...

    kaorin, 22 Апреля 2015

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

    +163

    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
    if (in_array($id, $_SESSION['id']))
    {
    	for ($j = 0; $j < count($_SESSION['id']); $j++)
    	{
    		if ($_SESSION['id'][$j] == $id)
    		{ $num_el = $j;}
    	}
    
    		$_SESSION['count'][$num_el] += $count;
    		$_SESSION['summa'][$num_el] += $cost*1*$count;
    		$_SESSION['summa_all'] += $cost*1*$count;
    		$_SESSION['count_all'] += $count;
    }
    else
    {
    	$_SESSION['id'][] = $id;
    	$_SESSION['count'][] = $count;
    	$_SESSION['summa'][] = $cost*1*$count;
    	$_SESSION['summa_all'] += $cost*1*$count;		
    	$_SESSION['count_all'] += $count;	
    }

    Главное не забыть умножить на единицу

    roocster, 13 Апреля 2015

    Комментарии (3)
  7. Assembler / Говнокод #17931

    +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
    ;Дисассемблировано "Doctor Watson" для Windows Server 2003 R2 x64
            00000000`004d3f4b 2448             and     al,0x48
            00000000`004d3f4d 488b742440       mov     rsi,[rsp+0x40]
            00000000`004d3f52 418b4008         mov     eax,[r8+0x8]
            00000000`004d3f56 4c8b642420       mov     r12,[rsp+0x20]
            00000000`004d3f5b 488b5c2430       mov     rbx,[rsp+0x30]
            00000000`004d3f60 ffc8             dec     eax
            00000000`004d3f62 498d54c00c       lea     rdx,[r8+rax*8+0xc]
            00000000`004d3f67 666690           nop
            00000000`004d3f6a 666690           nop
            00000000`004d3f6d 666690           nop
    FAULT ->00000000`004d3f70 0fb74202 movzx eax,word ptr [rdx+0x2] ds:00000008`01511086=????
            00000000`004d3f74 443bc8           cmp     r9d,eax
            00000000`004d3f77 440f42c8         cmovb   r9d,eax
            00000000`004d3f7b 66837a0400       cmp     word ptr [rdx+0x4],0x0
            00000000`004d3f80 7415             jz      bma+0xd3f97 (00000000004d3f97)
            00000000`004d3f82 488d0cc500000000 lea     rcx,[00000000+rax*8]
            00000000`004d3f8a 488d0449         lea     rax,[rcx+rcx*2]
            00000000`004d3f8e 0f181442         prefetcht1 byte ptr [rdx+rax*2]
            00000000`004d3f92 4803d1           add     rdx,rcx
            00000000`004d3f95 ebd9             jmp     bma+0xd3f70 (00000000004d3f70)
            00000000`004d3f97 488bc5           mov     rax,rbp

    HP Data Protection Manager 6.10, Windows x86-64, NDMP Media Agent. С первым патчем (не помню номер). Падал с Access Violation.
    Явно ошибка в компиляторе. Если что, в rax в этот момент было 0x00000000ffffffff.

    motoprogger, 04 Апреля 2015

    Комментарии (3)
  8. Си / Говнокод #17893

    +141

    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
    int fpga_read(char *dev, unsigned int base_addr, unsigned int offset, int len, unsigned char *buf)
    {
        unsigned long long pci_raddr;
        int actual;
        FILE    *fi;
    
        fi = fopen(dev, "r");
        if (fi == NULL) {
            printf("Failed to read from FPGA - Error opening device\n");
            return 1;
        }
    
        pci_raddr = (unsigned long long) 2 << 32 | (base_addr + offset);
        setvbuf(fi, NULL, _IONBF, 0);       // disable file buffering
        fseeko(fi, pci_raddr, SEEK_SET);        // go to the address
        actual = fread(buf, 1, len, fi);        // read the data
        fclose(fi);
        if (actual <= 0) {
            printf("Error  %d reading from device (dev %s, base addr 0x%x, offset 0x%x, len %i)\n", errno, dev, base_addr, offset, len);
            return 2;
        }
        return 0;
    }

    По многочисленным просьбам говнокодеров, выделил в отдельный пост.

    codemonkey, 30 Марта 2015

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

    +57

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    double g(void) {
    int i;
    for (i = 0; i < N; i++) {
    return (3*psi[i] + 25) * (0.1);
    }
    }

    Попросили посмотреть код. Привожу как есть.

    hindsight, 25 Марта 2015

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

    +159

    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
    public function getProductAttributes($product_id) {
    	$product_attribute_data = array();
    
    	$product_attribute_query = $this->db->query("SELECT attribute_id FROM " . DB_PREFIX . "product_attribute WHERE product_id = '" . (int)$product_id . "' GROUP BY attribute_id");
    
    	foreach ($product_attribute_query->rows as $product_attribute) {
    		$product_attribute_description_data = array();
    
    		$product_attribute_description_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_attribute WHERE product_id = '" . (int)$product_id . "' AND attribute_id = '" . (int)$product_attribute['attribute_id'] . "'");
    
    		foreach ($product_attribute_description_query->rows as $product_attribute_description) {
    			$product_attribute_description_data[$product_attribute_description['language_id']] = array('text' => $product_attribute_description['text']);
    		}
    
    		$product_attribute_data[] = array(
    			'attribute_id'                  => $product_attribute['attribute_id'],
    			'product_attribute_description' => $product_attribute_description_data
    		);
    	}
    
    	return $product_attribute_data;
    }

    Opencart -> ModelCatalogProduct -> getProductAttributes
    Первым запросом в БД они берут IDы атрибутов, перебирают их циклом, в котором другим запросом берут всё, в том числе и те же IDы, из той же таблицы и снова перебирают строки циклом.

    technobulka, 25 Марта 2015

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

    +127

    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
    INDEX.HTML
    
        {% extends "style_body.html" %}
        {% block head %}
        <meta charset="UTF-8">
        {% endblock %}
    {% block body %}
    <h1 align="center">Звіт по витратах</h1>
    
    <table align="center">';
    {% for item in payments['list'] %}
        <tr><td>{{ item['data']}}</td>
            <td>{{item['summa']}}</td>
            <td>{{item['id']}}</td>
            <td><button  onclick="window.location.href='index.php?id={{item['id']}}&go=delete'"><img src="del.gif" alt="Del"style="vertical-align: middle">  </button></td></tr>
    {% endfor %}
    
    </table>
    </br></br></br>
    <table align="center"><tr><td><button   onclick="window.location.href='index.php?go=addData'">
        <img src="add.png" alt="Add" style="vertical-align: middle">Додати новий запис </button></td></tr></table>
    {% endblock %}
    
    
    FORM.HTML
    {% extends "style_body.html" %}
    
        {% block title %}
    
        {% endblock %}
        {% block head %}
    
        {% endblock %}
    
    {% block body %}
    <form name="test" method="post" action="index.php">
    
       <p align="center"><b>Введіть дату в форматі гггг-мм-дд:</b></br>
           <input type="hidden" name="go" value="add" >
           <input type="text" size="40" name="data" align="center" ></br>
    
           <b align="center">Введіть витрачену сумму:</b></br>
           <input type="text" size="40" name="summa" align="center"></br>
           </p>
    
       <p align="center"><input type="submit" value="Додати запис">
          <input type="reset" value="Очистити"></p>';
       </form>';
    {% endblock %}
    
    STYLE_BODY.HTML
    <!DOCTYPE html>
    <html>
    <head >
        {% block head %}
    
        <title>{% block title %}{% endblock %} - My Webpage</title>
        {% endblock %}
    </head>
    <body background="money.jpg">
    {% block body %}{% endblock %}
    </div>
    </body>
    </html>

    vityapro, 24 Марта 2015

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