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

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

    +130

    1. 1
    http://ithappens.ru/story/11670

    TarasB, 28 Ноября 2013

    Комментарии (106)
  3. 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)
  4. 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)
  5. 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)
  6. 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)
  7. Python / Говнокод #25646

    −4

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

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

    OCETuHCKuu_nemyx, 28 Мая 2019

    Комментарии (105)
  8. 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)
  9. 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)
  10. 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)
  11. 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)