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

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

    +75

    1. 1
    2. 2
    3. 3
    4. 4
    status.setCounter(new Number(
     Number.nullToZero(
    status.getCounter()).add(
    value.movePointRight(2))));

    Действительно, кому нужна перегрузка операторов?

    Zozopy, 03 Июля 2012

    Комментарии (106)
  3. JavaScript / Говнокод #27143

    +3

    1. 1
    2. 2
    3. 3
    "experiments":[25894,19733,11804,21034,31793,21476,17396,12016,
    ...
    window._data = {"__type":"ru.yandex.zen.publishers.front.pojo.PublicationPageNodeData","publisher":{"id":"592d594b8e557de2f707c29f","name":"FORUMHOUSE","nickname":{"raw":"forumhouse","normalized":"forumhouse"},"ownerUid":13690671,"statId":4156,"description":"Добро пожаловать на портал №1 в России, посвященный строительству и загородной жизни.\n\nЗдесь мы публикуем новости, оригинальные материалы, фотообзоры домов; веселим приколами и угощаем рецептами; проверяем знания тестами; даем рекомендации по стройке и ремонту, раскрываем секреты мастеров.","socialLinks":[{"link":"https:\u002F\u002Fwww.instagram.com\u002Fforumhouse\u002F","socialNetwork":"instagram"},{"link":"https:\u002F\u002Fok.ru\u002Fforumhouse","socialNetwork":"ok"},{"link":"https:\u002F\u002Fvk.com\u002Fforumhouse","socialNetwork":"vk"},{"link":"https:\u002F\u002Fwww.facebook.com\u002FForumHouse","socialNetwork":"facebook"}],"themes":[],"logo":{"id":"5ae188e38c8be3ec66de9bb5"},"domain":"forumhouse.ru","agreement":true,"isNirvana":false,"isAdultContent":true,"isSubscribedToEmails":true,"itemId":"981789127750603755","favouritesCount":51813,"audience":1020223,"shouldSendReport":false,"isVerified":false,"allowedPrivateMessages":false,"chatReferences":[]},"publication":{"id":"5fab9d6891ab8a65f7246192","publisherId":"592d594b8e557de2f707c29f","addTime":1605083675615,"publishTime":1606389210899,"content":{"type":"article","articleContent":{"contentState":"{\"blocks\":[{\"data\":{},\"depth\":0,\"entityRanges\":[],\"inlineStyleRanges\":[],\"text\":\"Чтобы что-то делать, нужно хоть что-то уметь — звучит просто и правильно. У героев нашей очередной подборки, по всей видимости, строительных навыков нет, но они уже вышли на тропу серьёзного заработка. Что оставляют после себя дилетанты, когда попадают на стройку — смотрите далее.\",\"type\":\"unstyled\",\"key\":\"3sbd\"},{\"data\":{\"image\":{\"id\":\"5fab9d9a7935977d97ff25e1\"}},\"depth\":0,\"entityRanges\":[],\"inlineStyleRanges\":[],\"text\":\"Источник фото: инстаграм-аккаунт rukozhopy\",\"type\":\"atomic:image\",\"key\":\"881o6\"},{\"data\":{},\"depth\":0,\"entityRanges\":[],\"inlineStyleRanges\":[],\"text\":\"Немного криво — делу не помеха\",\"type\":\"header-two\",\"key\":\"c8dnh\"},{\"data\":{},\"depth\":0,\"entityRanges\":[],\"inlineStyleRanges\":[],\"text\":\"Криво — это такая мера, которая не везде заметна. Согласны? Вот например, на кухне. Ну кто будет измерять пирожки, когда их оценивают по совершенно другим критериям? Здесь важен их вкус и количество начинки. Кулинар может допустить оплошность в калибровке пельменей или размере макаронин. А вот строитель — нет!\",\"type\":\"unstyled\",\"key\":\"4k113\"},{\"data\":{\"image\":{\"id\":\"5fab9dbd91ab8a65f724f703\"}},\"depth\":0,\"entityRanges\":[],\"inlineStyleRanges\":[],\"text\"

    Открыл исходный код произвольной страницы на кое-каком сайте для текстов с картиночками, а там

    * Человекочитаемый текст - метушня в <head> и <meta> для роботов
    * Какой-то скрипт зожатый на 17к симполов
    * Зожатый(!) CSS на 190к символов
    * Зожатый скрипт 58к, содержащий контент в нечитаемом виде (русские буквы там могут быть заэскейпенными, но почему-то не все)
    * Зожатый скрипт + зожатый HTML 62к, содержащий код, кнопки, картинки, копии текста из зожатого скрипта на 58к

    И всё это ради того, чтобы показать 5к символов текста и вставить 9 картинок. Даже комментарии подгружаются аяксом.

    НАЧАЛЬНИК, БЛЯДЬ, ОН ОБОСРАЛСЯ! ИДИТЕ МОЙТЕ ЕГО НАХУЙ, Я С НИМ ЗДЕСЬ СИДЕТЬ НЕ БУДУ, БЛЯДЬ! Я НЕ БУДУ С ЭТИМ ГОВНОЕДОМ СИДЕТЬ! — ХУЛИ ВЫ МЕНЯ С СУМАСШЕДШИМ ПОСЕЛИЛИ, БЛЯДЬ, ОН ЖЕ МУДАК ПОЛНЫЙ, БЛЯ!!!

    Как мы до этого докатились?

    1024--, 01 Декабря 2020

    Комментарии (105)
  4. Kotlin / Говнокод #27087

    +1

    1. 1
    2. 2
    Currently it's hard or even impossible to use hexadecimal literal constants that result in overflow of the corresponding signed types. 
    https://github.com/Kotlin/KEEP/blob/master/proposals/unsigned-types.md

    какой пиздец!!!

    MAKAKA, 06 Ноября 2020

    Комментарии (105)
  5. Python / Говнокод #26356

    +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
    #  Пример #1
    class FastClass:
    
        def do_stuff(self):
            temp = self.value  # это ускорит цикл
            for i in range(10000):
                ...  # Выполняем тут некие операции с `temp`
    
    #  Пример #2
    import random
    
    def fast_function():
        r = random.random
        for i in range(10000):
            print(r())  # здесь вызов `r()` быстрее, чем был бы вызов random.random()

    Забавно, что в статье под названием «Разработка чрезвычайно быстрых программ на Python» (https://habr.com/ru/company/ruvds/blog/483678) этот самый «Python» оказался обосран (ненамеренно) куда качественнее, чем в недавно обсуждённом высере (https://govnokod.ru/26050#comment517858).

    Неужели конпелятор/интерпретатор «Питона» настолько туп, что не может самостоятельно провести вот эти вот микрооптимизации?

    gost, 16 Января 2020

    Комментарии (105)
  6. Python / Говнокод #25646

    −4

    1. 1
    2. 2
    >>> -14 // 57
    -1

    Отсосу питоноблядей!
    https://ideone.com/kBYoU9

    OCETuHCKuu_nemyx, 28 Мая 2019

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

    +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
    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
    #include <tuple>
    #include <utility>
    #include <array>
    
    namespace detail {
    
    template <typename... Types, std::size_t... Indexes>
    auto make_array(const std::tuple<Types...> &t, std::index_sequence<Indexes...>) {
       using Tuple = std::tuple<Types...>;
       using ValueType = typename std::tuple_element<0, Tuple>::type;
       return std::array<ValueType, sizeof...(Types)>{ std::get<Indexes>(t)... };
    }
    
    template <typename Value>
    constexpr Value fib(std::size_t idx) {
      switch (idx) {
      case 0: return 1;
      case 1: return 1;
      default: return fib<Value>(idx - 1) + fib<Value>(idx - 1);
      }
    }
    }
    
    template <class... Args>
    auto to_array(const std::tuple<Args...> &t) {
      return detail::make_array(t, std::index_sequence_for<Args...>{});
    }
    
    template <typename Value, std::size_t size>
    class Fibonacci {
    public:
      constexpr auto as_array() const { return to_array(as_tuple()); }
     
      constexpr operator std::array<Value, size>() const { return as_array(); }
      
    private:
      template <std::size_t offset = 0> 
      constexpr auto as_tuple() const {
        return std::tuple_cat(std::tuple{detail::fib<Value>(offset)}, as_tuple<offset + 1>());
      }
      
      template <>
      constexpr auto as_tuple<size - 1>() const { return std::tuple{detail::fib<Value>(size - 1)}; }
    };
    
    int main() {
      std::array a = Fibonacci<int, 10>().as_array();
      return a[5];
    }

    По мотивам http://govnokod.ru/25401#comment460820. Правда на момент написания я прошляпил, что речь шла о "нельзя возвращать массив"ю

    Elvenfighter, 25 Февраля 2019

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

    −1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    https://madnight.github.io/githut/#/pull_requests/2018/2
    
    Python, Ruby, C++, Java и Go популярнее чем PHP.
    
    PHP не нужен

    roskomgovno, 07 Августа 2018

    Комментарии (105)
  9. Assembler / Говнокод #24481

    −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
    ; минимальная .COM программа, которую я смог высрать в ascii
    ; генерит ret и передаёт на него управление
    ; пробел (and r/m8, reg) я тоже не использовал
    ; писалась в hex-кодах
    
    push 314ah
    pop ax
    xor ax, 3070h
    push ax
    pop bx
    pop ax
    push ax
    xor ah, [bx]
    sub [bx], ah
    pop ax
    push ax
    dec ax
    xor ax, 3c3ch
    xor bx, ah
    jnz 013ah

    hJ1X5p0P[XP2'('XPH5<<0'u!
    Мой малинькый скукожоный моск очинь долго мучился, прежде чем родить это. Так что, не судити строго. :)

    666_N33D135, 11 Июля 2018

    Комментарии (105)
  10. C++ / Говнокод #20440

    +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
    #include <iostream>
    #include <tuple>
    using namespace std;
    
    template<typename T, typename T0, typename T1, typename ...Args>
    void PrintStruct(const tuple<T0 T::*, T1 T::*, Args T::*...>& members, const T& val)
    {
    	cout << val.*std::get<0>(members) << endl;
    	PrintStruct(members._Get_rest(), val);
    }
    
    template<typename T, typename T0>
    void PrintStruct(const tuple<T0 T::*>& members, const T& val)
    {
    	cout << val.*std::get<0>(members) << endl;
    }
    
    struct MyStruct
    {
    	int x;
    	float y;
    
    	static const tuple<decltype(&MyStruct::x), decltype(&MyStruct::y)> Members;
    };
    
    const tuple<int MyStruct::*, float MyStruct::*> MyStruct::Members = std::make_tuple(&MyStruct::x, &MyStruct::y);
    
    int main()
    {
    	MyStruct str = {123, 3.14159f};
    	PrintStruct(MyStruct::Members, str);
    	return 0;
    }

    Пытался понять, почему мой код не компилится в 2013 студии, и быстренько накатал этот минимальный пример. Но вышел облом - он почему-то компилится, в отличие от моей реальной либы со схожими шаблонными крестоконструкциями.

    gammaker, 27 Июля 2016

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

    +139

    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
    // ==UserScript==
    // @name		GK parent comment
    // @namespace	GK
    // @description	Adds links to parent commentary to GK comments, and sets parent commentary text as link tooltip.
    // @include	http://govnokod.ru/*
    // @include	http://www.govnokod.ru/*
    // @version	1.0.0
    // @updateURL	http://userscripts.org/scripts/source/172756.meta.js
    // @downloadURL http://userscripts.org/scripts/source/172756.user.js
    // ==/UserScript==
    
    (function(){
    //hack for Chrome, as it doesn't support unsafeWindow.
    if (typeof unsafeWindow == 'undefined')
    	{
    	unsafeWindow = (function() 
    		{
    		var el = document.createElement('p');
    		el.setAttribute('onclick', 'return window;');
    		return el.onclick();
    		}())
    	};
    $ = unsafeWindow.jQuery;
    
    //dirty, DIRTY hack to wait for certain element to appear. -_- 
    //But I have no idea how to do it right.
    function waitForSelector(selector, context, mustexist, callback) {
    	var l = $(selector, context).length;
    	if ((l>0) != mustexist)
    		{
    		setTimeout(function(){waitForSelector(selector, context, mustexist, callback)}, 50);
    		return false;
    		};
    	callback();
    	}
    
    //short function for adding custom CSS rules. Why use Greasemonkey specific GM_setStyle() just for that?
    function addCSS(rule) {
    	var styleElement = document.createElement("style");
    	styleElement.type = "text/css";
    	if (typeof styleElement.styleSheet !== 'undefined')
    		styleElement.styleSheet.cssText = rule;
    	else
    		styleElement.appendChild(document.createTextNode(rule));
    	document.getElementsByTagName("head")[0].appendChild(styleElement);
    	}
    
    addCSS([
    	'.comment-parent-link {margin-left:10px;font-size:10pt}',
    	].join('/n'));
    
    var PARENT = '<a class="comment-link comment-parent-link" href="">↑</a>';
    
    var oldLoadComments = unsafeWindow.comments['load'];
    
    function newLoadComments(aElemTrigger) {
    	var $parent = $(aElemTrigger).closest('.entry-comments');
    	oldLoadComments.call(this,aElemTrigger);
    	waitForSelector('.hcomment', $parent, true, function(){
    		setParentLinks($parent);
    		});
    	}
    
    unsafeWindow.comments['load'] = newLoadComments;
    	
    function setParentLinks($context) {
    	$context.find('.hcomment').each(function(i,e){
    		var $this = $(this);
    		var $parent = $this.parents('.hcomment:eq(0)');
    		if ($parent.length) {
    			var $parentlink = $(PARENT);
    			$parentlink.attr('href', $parent.find('a.comment-link:eq(0)').attr('href'));
    			$parentlink.attr('title', $parent.find('.comment-text:eq(0)').text());
    			$this.find('a.comment-link:eq(0)').after($parentlink);
    			}
    		});
    	}
    
    setParentLinks($('body'));
    })();

    http://userscripts.org/scripts/show/172756
    По просьбам трудящихся, скрипт для поиска родительского комментария. Добавляет ссылку на родителя, и ставит его текст как тултип.
    Учитывая подключение либы с самого сайта и метод поиска динамически подгруженных комментариев, вполне себе говнокод. А потому: тов. Страйкер, вынесите уже отдельно функцию comments.loadSuccessful()! А то адский гемморой любую постобработку комментариев делать.

    Vindicar, 07 Июля 2013

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