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

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

    −2

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    this.params.IsCellEditable = function(rowNumber, cellNumber) {
    	cellNumber == 1;
    	this.params.ButtonList = this.params.ButtonList.filter(b=>b[0] === "OnRefresh");
    
    	let textContr = new CTextArea('textContr');
    	textContr.SourceName = "value";
    	textContr.ViewName = "Params";
    	textContr.ComEdit = true;
    	this.params.arrEditObj[1] = textContr;
    
    }

    Найдено в нашем проекте в старом модуле, в авторстве никто не признаётся.
    Во-первых, строка 2 бессмысленна. Во-вторых, всё последующее имело бы хоть какой-то смысл _вне_ этой функции, а внутри уже на строке 3 выкидывает ошибку, потому что контекст там и есть this.param из первой строчки. В-третьих, строка 3 призвана выкидывать из тулбара виджета this.param все кнопки, кроме OnRefresh, но на самом деле она там только одна и есть. В-четвёртых, строчки 7 и 8 просто лишние (ну, это из логики используемого в проекте движка следует). В-пятых, из названия метода можно предположить (и это действительно так), что он должен бы возвращать булевское значение, но он всегда возвращает только undefined и, таким образом, все ячейки виджета оказываются нередактируемыми — что совсем лишает смысла создание контрола для редактирования в строках 5—9.
    Редкостная бредятина. Кто-то в полном затмении писал, и даже десяти секунд не потратил на тестирование.

    torbasow, 06 Мая 2016

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

    +1

    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
    <?
    	/*
    		Bitrix Cleaner v2.2 - https://github.com/creadome/bitrixcleaner
    		Быстрая очистка 1С-Битрикс
    		(c) 2015 Станислав Васильев - http://creado.me
    		[email protected]
    	*/
    	require $_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_admin_before.php';
    	$trash = array(
    		'cache' => array(
    			'/bitrix/cache/' => 'Неуправляемый кеш',
    			'/bitrix/managed_cache/' => 'Управляемый кеш',
    			'/bitrix/html_pages/' => 'HTML кеш'
    		),
    		'files' => array(
    			'/upload/resize_cache/' => 'Кеш изображений'
    		)
    	);
    	if ($_GET['clean']) {
    		BXClearCache(true);
    		$GLOBALS['CACHE_MANAGER']->CleanAll();
    		$GLOBALS['stackCacheManager']->CleanAll();
    		$staticHtmlCache = \Bitrix\Main\Data\StaticHtmlCache::getInstance();
    		$staticHtmlCache->deleteAll();
    		foreach ($trash['files'] as $files => $name) DeleteDirFilesEx($files);
    	}
    	function countsize($directory) {
    		$count = array('file' => 0, 'size' => 0);
    		foreach (scandir($directory) as $file) {
    			if ($file != '.' && $file != '..') {
    				if (is_dir($directory.$file)) {
    					$inner = countsize($directory.$file.'/');
    					$count['file'] += $inner['file'];
    					$count['size'] += $inner['size'];
    				} else {
    					$count['file'] ++;
    					$count['size'] += filesize($directory.$file);
    				}
    			}
    		}
    		return $count;
    	}
    ?>
    
    <table>
    	<tr>
    		<th>Описание</th>
    		<th>Путь</th>
    		<th>Файлы</th>
    		<th>Размер</th>
    	</tr>
    
    	<?
    		foreach ($trash as $type) {
    			foreach ($type as $directory => $name) {
    				$count = countsize($_SERVER['DOCUMENT_ROOT'].$directory);
    	?>
    
    				<tr>
    					<td><?=$name?></td>
    					<td><a href="/bitrix/admin/fileman_admin.php?lang=ru&amp;path=<?=$directory?>"><?=$directory?></a></td>
    					<td><?=$count['file']?></td>
    					<td><?=round($count['size'] / 1048576, 2)?> Мб</td>
    				</tr>
    
    	<?
    			}
    		}
    	?>
    </table>
    
    <input type="button" value="Очистить" class="adm-btn-save" data-action="clean">

    Битрикс. порадовала строчка "'/bitrix/cache/' => 'Неуправляемый кеш'". Оказывается даже адептам битрикса не подвластно управление кешом самого битрикса :D

    https://github.com/creadome/bitrixcleaner/blob/master/cleaner/cleaner.php

    Keeper, 05 Мая 2016

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

    +1

    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
    <ul id="top_menu" alias="{$alias}" parentAlias="{$parentAlias}">
        {foreach $items as $i}
            {*{$i->parentId == null} :)*}
            {if $i->parentId == null}
                <li class="{if $alias === $i->alias || $parentAlias === $i->alias}active{/if}"><a href="{Yii::app()->params->languageUrl}/{$i->alias}" onclick="return false;">{$i->lang->name}</a>
                    <ul class="sub" style="display: none;">
                        {foreach $items as $ii}
                            {if $ii->parentId == $i->id}
                                <li class="{if $alias === $ii->alias || $parentAlias === $ii->alias}active{/if}">
                                    {if $ii->hasAction > 0}
                                        <a href="{if $ii->alias!==''}{Yii::app()->params->languageUrl}/{$ii->alias}{/if}">{$ii->lang->name}</a>
                                    {else}
                                        <a href="{Yii::app()->params->languageUrl}/{$i->alias}{if $ii->alias!==''}/{$ii->alias}{/if}">{$ii->lang->name}</a>
                                    {/if}
                                </li>
                            {/if}
                        {/foreach}
                    </ul>
                </li>
            {/if}
        {/foreach}
    </ul>

    Типичное меню на фреймворках.
    В данном случае Yii

    M-A-X, 26 Апреля 2016

    Комментарии (8)
  5. JavaScript / Говнокод #19825

    −9

    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
    function delMessage(id,posted) {
    				if (confirm("Удалить сообщение от "+posted+" ?")) {
                        if('corporate'=='common')
    					{   
                            window.location="/forum/theme/?id=22213&delmsg="+id;
                        }
                        else if ('corporate'=='olimpic')
                        {
                            window.location="/competitions/kazah/team/?teamId=0&tab=forum&themeId=22213&delmsg="+id;
                        }
                        else if ('corporate'=='city')
                        {
                            window.location="/city/?id=&tab=forum&themeId=22213&delmsg="+id;
                        }
                        else
                        {
                            window.location="/corporation/?id=1401150&tab=forum&themeId=22213&delmsg="+id;
                        }
    				}
    			}
                function addMessage() {
    				document.messageForm.submit();
                }
                function closeMessage() {
    				var textarea=document.getElementById("messagetext");
                    if (textarea) textarea.value="";
                    var div=document.getElementById("submit");
                    if (div) div.style.display="none";
                }
                function showSubmit() {
                	showElement("submit");
                }
                function messageKeyDown(event) {
            	if (!event) event=window.event;
                    if (event.keyCode==13 && event.ctrlKey || event.keyCode==10) {
                    addMessage();
                    }
                }

    d_fomenok, 15 Апреля 2016

    Комментарии (8)
  6. C# / Говнокод #19780

    +1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    // 1188 references
    internal static string CombinePaths(string firstPath, string secondPath)
    {
        return Path.Combine(firstPath, secondPath);
    }

    - Шо это было?!!
    - Cэкономили точку. 1188 раз )))))

    RadChand, 08 Апреля 2016

    Комментарии (8)
  7. C++ / Говнокод #19742

    +4

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    class Panel
    {
    // ...
    friend class Panel;
    // ...
    }

    Нашёл такое в хедерах VGUI1 -- игрового тулкита от Valve для Gold Source.
    Объясните, умные люди, зачем?

    a1batross, 01 Апреля 2016

    Комментарии (8)
  8. C# / Говнокод #19730

    +2

    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
    public int Add(T item)
    {
        var p = m_parent as DataTreeRecord;
        var i = item as DataTreeRecord;
        if (m_newData == null || m_newData.Length == 0) m_newData = new T[8];
        if (m_newData.Length <= m_newCount) Array.Resize(ref m_newData, m_newData.Length * 2);
    
        if (p != null && i != null)
        {
            i.Parent = p;
        }
        m_newData[m_newCount++] = item;
        OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, new T[1] { item }));
        return this.Count - 1;
    }

    Мы любим ебаться с array. List? Зачем, он медленный! Мы напишем свой ORM с аррэями и PHP внутри няшного сишарпика.

    Приходилось работать с этим проектом. Это просто кладезь говнокода, и это ещё не самое ужасное место.

    kerman, 31 Марта 2016

    Комментарии (8)
  9. JavaScript / Говнокод #19685

    −3

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    // if too many vertices, start a new mesh;
                if (vertices.length > 65000) {
                    // finalize the old mesh	
                    mesh.triangles = triangles;
                    mesh.vertices = vertices;
                    mesh.colors = colors;
                    mesh.computeWireframe();
                    mesh.computeNormals();
    
                    if (mesh.vertices.length) {
                        meshes.push(mesh);
                    }

    не добавляем пустые меши, нафиг они нам

    makc3d, 23 Марта 2016

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

    −1

    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
    FROM centos:7
    
    RUN yum update -y && yum -y install openssh-server ssh
    
    RUN echo 'root:123456' | chpasswd
    RUN passwd -u root
    RUN ssh-keygen -A
    RUN ssh-keygen -t rsa -b 4096 -C "[email protected]" -N "" -f /root/.ssh/id_rsa
    RUN cat /root/.ssh/id_rsa.pub > /root/.ssh/authorized_keys
    RUN chmod 600 /root/.ssh/id_rsa.pub
    ADD ./ssh_config /etc/ssh/ssh_config
    ADD ./sshd_config /etc/ssh/sshd_config
    
    CMD ["/bin/sh", "-c", "{ while :; do /usr/sbin/sshd -eD ; done }"]

    docker build --name trolleybus-is-hleba .

    Вот так вот.

    wvxvw, 16 Марта 2016

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

    +4

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    #!/bin/bash
    echo "(find-file \"$1\")" >> ~/.emacs.d/cmdfile
    
    В emacs периодически дергается
    
    (defun read-cmd-file ()
      (load-file "~/.emacs.d/cmdfile")
      (delete-file "~/.emacs.d/cmdfile"))
    
    (run-with-idle-timer 1 t 'read-cmd-file)

    гуру emacs ЛОРа

    CHayT, 03 Марта 2016

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