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

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

    0

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    class BasicData {
    public:
      virtual ~BasicData() = default;
    
      virtual std::vector<std::byte> bytes() const = 0;
    
    protected:
      BasicData() = default; // <-- сабж
    };

    Я не знаю зачем (строчка 8), но походу шоб всякие дядьки не дергали что им не можно. spoiler: Только вот так или иначе не дернут.

    Elvenfighter, 09 Сентября 2019

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

    +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
    function check($str)
        {
            $str = htmlentities($str, ENT_QUOTES, 'UTF-8');
            $str = str_replace("'", "'", $str);
            $str = str_replace("rn", "<br/>", $str);
            $str = strtr($str, array(chr("0") => "", chr("1") => "", chr("2") => "", chr("3") => "", chr("4") => "", chr("5") => "", chr("6") => "", chr("7") => "", chr("8") => "", chr("9") => "", chr("10") => "", chr("11") => "", chr("12") => "", chr
            ("13") => "", chr("14") => "", chr("15") => "", chr("16") => "", chr("17") => "", chr("18") => "", chr("19") => "", chr("20") => "", chr("21") => "", chr("22") => "", chr("23") => "", chr("24") => "", chr("25") => "", chr("26") => "", chr("27") =>
            "", chr("28") => "", chr("29") => "", chr("30") => "", chr("31") => ""));
            $str = str_replace('\', "\", $str);
            $str = str_replace("|", "I", $str);
            $str = str_replace("||", "I", $str);
            $str = str_replace("/\$/", "$", $str);
            $str = str_replace("[l]http://", "[l]", $str);
            $str = str_replace("[l] http://", "[l]", $str);
            $str = mysql_real_escape_string($str);
            return $str;
        }

    Функция check от моего предыдущего поста

    eskrano, 27 Апреля 2019

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

    0

    1. 1
    https://stackoverflow.com/questions/4233218/python-how-do-i-get-key-value-pairs-from-the-basehttprequesthandler-http-post-h

    Блядь, как всё сложно.
    Поэтому я за "PHP".

    OCETuHCKuu_nemyx, 04 Апреля 2019

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

    +1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    ( '''' )
    ( 3 ) : 'HELLO-FORTH  ." Hello, Forth!" BEGIN REFILL 0= UNTIL ; 'HELLO-FORTH
    echo 'Hello, J!'
    print =: ]
    NB.''')
    print('Hello, Python!')

    1. Forth
    2. J
    3. Python1
    4. Python2
    5. Python3

    Rooster, 24 Января 2019

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

    0

    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
    /*
    https://habr.com/post/246009/
    
    Это вторая статья в цикле «Теория категорий для программистов».
    
    ...
    
    Я хотел бы сказать вам, что есть шаблон в стандартной библиотеке С++,
    который принимает две функции и возвращает их композицию, но такого
    нет.
    
    Примечание переводчика: но такой не сложно написать на С++14 (я опускаю
    тонны деталей владения и шаблонной магии для проверок, что эти функции
    и тип аргумента действительно можно компоновать):
    */
    
    template <typename T>
    struct function_arg: public function_arg<decltype(&T::operator())> {};
    
    template<typename ReturnType, typename Arg>
    struct function_arg<ReturnType(Arg) const> {
    	using type = Arg;
    };
    
    template<typename ClassType, typename ReturnType, typename Arg>
    struct function_arg<ReturnType(ClassType::*)(Arg) const> {
    	using type = Arg;
    };
    
    template<typename T>
    using function_arg_t = typename function_arg<T>::type;
    
    template<typename F, typename G>
    auto compose(F&& f, G&& g) {
    	return [f = std::forward<F>(f), g = std::forward<G>(g)]
    		(function_arg_t<F>&& a) {return g(f(std::forward<function_arg_t<F>>(a)));};
    }

    Поэтому я за C++

    j123123, 22 Октября 2018

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

    −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
    #include <new>
    
    template <typename Lhs, typename Rhs>
    auto replace(Lhs *lhs, Rhs) {
      return *new (reinterpret_cast<void*>(lhs)) Rhs{};
    }
    
    int main() {
      auto f1 = &add;
      auto f2 = replace(add, [](int a, int b) { return a - b; });
    
      f1(4, 2);
      f2(4, 2);
    }

    Компилируется, не падает при запуске.

    Elvenfighter, 16 Октября 2018

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

    −3

    1. 1
    $keys = array_keys(array_flip($keys));

    Малая доля индусского кода

    kgk, 14 Октября 2018

    Комментарии (17)
  9. 1C / Говнокод #24860

    −9

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    Процедура тпТоварыПриПолученииДанных(Элемент, ОформленияСтрок)
    	Модифицированность_ = Модифицированность;
    	Для Каждого Стр из ОформленияСтрок Цикл
    		Если НЕ Стр.ДанныеСтроки.Вес = 0 И НЕ Стр.ДанныеСтроки.ПроцентУсушки = 0 Тогда			
    			Стр.ДанныеСтроки.Усушка = (Стр.ДанныеСтроки.Вес * Стр.ДанныеСтроки.ПроцентУсушки / 100) * Стр.ДанныеСтроки.Количество;									
    		КонецЕсли;
    	КонецЦикла;
    	Модифицированность = Модифицированность_;
    КонецПроцедуры

    Данные табличной части модифицируются в процедуре ПриПолученииДанных (видимо, лучшего места для этого не нашлось), что закономерно приводит к отложенному на мгновение вызову ПриПолученииДанных ещё раз, и ещё, и так далее. В результате процессор загружается почти на 100%, значок * в заголовке формы дико мерцает.
    Написано программистом с 6-значной ЗП.

    strashny_programmist, 04 Октября 2018

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

    −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
    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
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    92. 92
    93. 93
    94. 94
    95. 95
    96. 96
    97. 97
    98. 98
    99. 99
    require_once $_SERVER['DOCUMENT_ROOT'] . '/models/core/class.Application.php';
    require_once 'class.DatabaseConnect.php';
    require_once 'class.DatabaseResult.php';
    
    class DatabaseQuery extends Application {
    
        private $m_db_connect = NULL; //Соединение с БД
        private $m_query_statment = NULL; //Результат последнего запроса
        private $m_construct_query = NULL; //Строка формирования запроса
    
        public function __construct(DatabaseConnect $db_connect) {
            $this->m_db_connect = $db_connect;
        }
        
        public function __destruct() {
            $this->m_db_connect = null;
        }
    
        //Вставляет данные в таблицу
        public function insert($data) {
            if (count($data) === 0)
                return false;
            $query_list = [];
            //Обход таблиц
            foreach ($data as $t_name => $table) {
    
                //Ассациативный массив даннвх, где ключ массива это имя колонки в БД
                $column_list = [];
                //Копируем данные в отдельный массив	
                foreach ($table as $c_name => $column)
                    $column_list[$c_name] = $column;
                //Строка запроса
                $query = "INSERT INTO {$t_name} (" . implode(', ', array_keys($column_list)) . ') VALUES ';
                //Выпоняем обход
                for ($i = 0; $i < count($column_list[array_keys($column_list)[0]]); $i++) {
                    $query_values = '(';
                    //
                    foreach ($column_list as $c_name => $column)
                        $query_values .= '\'' . $column_list[$c_name][$i] . '\',';
    
                    $query_values = chop($query_values, ',') . '),';
                    $query .= $query_values;
                }
                $query_list[] = chop($query, ',');
            }
    
            try {
                for ($i = 0; $i < count($query_list); $i++) {
                    $result = $this->query($query_list[$i]);
                }
            } catch (PDOException $e) {
                Application::handlerErrorDB($e);
                return false;
            }
    
            return true;
        }
    
        public function setSelect($data = ['*']) {
            $query = 'SELECT ';
            foreach ($data as $v)
                $query .= $v . ',';
            $this->m_construct_query = chop($query, ',') . ' ';
            return $this;
        }
    
        public function setDelete($tables = []) {
            $query = 'DELETE ';
            foreach ($tables as $v)
                $query .= $v . ',';
            $this->m_construct_query = chop($query, ',') . ' ';
            return $this;
        }
    
        public function setUpdate($tables) {
            $query = 'UPDATE ';
            foreach ($tables as $v)
                $query .= $v . ',';
            $this->m_construct_query = chop($query, ',') . ' ';
            return $this;
        }
    
        public function setSet($data) {
            $query = 'SET ';
            foreach ($data as $k => $v)
                $query .= "$k = '$v',";
            $this->m_construct_query .= chop($query, ',') . ' ';
            return $this;
        }
    
        public function setFrom($tables) {
            $query = 'FROM ';
            foreach ($tables as $v)
                $query .= $v . ',';
            $this->m_construct_query .= chop($query, ',') . ' ';
            return $this;
        }
    
        ...

    Вот что бывает когда у тебя юношеский максимализм - ты пытаешь написать свой фреймворк, и при этом это твой первый проект на PHP.

    C3-PO, 03 Октября 2018

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

    −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
    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
    // ==UserScript==
    // @name           Comment Highlighter
    // @description    Подсвечивает новые комментарии
    // @include        *://govnokod.ru/*
    // @include        *://www.govnokod.ru/*
    // @version        2.1
    // @grant          none
    // ==/UserScript==
    
    (function() {
    
    function updateState(data, lastPID, updater) {
      // use `cid = 0` to enable highlighting comments in unvisited posts
      // use `cid = Infinity` to disable highlighting in unvisited posts
      var out, idx, pid, i = 0, cid = 0; // here
      
      while(i < data.length) {
        idx = i;
        pid = data.charCodeAt(i++);
        if(pid & 0x8000) {
          pid &= 0x7fff;
          pid <<= 16;
          pid |= data.charCodeAt(i++);
        }
        if(pid == lastPID) {
          cid = data.charCodeAt(i++) << 16 | data.charCodeAt(i++);
          break;
        } else {
          i += 2;
        }
      }
      
      data = pid == lastPID ? data.substring(0, idx) + data.substring(i) : data;
      
      var lastCID = updater(cid);
      
      if(isFinite(lastPID) && lastPID >= 0 && lastPID < 0x80000000) {
        data += (lastPID >= 0x8000 ? String.fromCharCode(0x8000 | lastPID >> 16) : '') +
          String.fromCharCode(lastPID & 0xffff) + String.fromCharCode(lastCID >> 16) +
          String.fromCharCode(lastCID & 0xffff);
      }
      
      return data;
    }
    
    function commentID(comment) {
      var commentLink = comment.querySelector('a.comment-link');
      return Number(commentLink.href.match(/comment(\d+)$/)[1]);
    }
    
    function updateComments(prevCID) {
      var comments = document.querySelectorAll('.entry-comment-wrapper');
      var lastCID = prevCID;
    
      for(var i=0; i<comments.length; ++i) {
        var comment = comments[i];
        var cid = commentID(comment);
        if(cid <= prevCID) continue;
        if(cid > lastCID) lastCID = cid;
        comment.classList.add('new');
      }
      
      return lastCID;
    }
    
    var post = location.pathname.match(/^\/(\d+)/);
    if(!post) return;
    
    var PARAM = '8a9bd32e-20bc-42c7-bcdd-b65bb1fc2d0b-visited2';
    var postID = +post[1];
    var oldState = localStorage.getItem(PARAM) || '';
    var newState = updateState(oldState, postID, updateComments);
    localStorage.setItem(PARAM, newState);
    
    })();

    Битоёбство в "JS".
    https://github.com/1024--/govnokod.ru-userscripts/blob/master/highlight-new.user.js

    > use `cid = Infinity` to disable highlighting in unvisited posts
    Не работает.
    При следующем открытии все помечаются как не прочтённые.

    Пофиксил так:

    function updateComments(prevCID, highlightUnvisited=false) {
    var comments = document.querySelectorAll('.entry-comment-wrapper');
    var lastCID = prevCID;

    for(var i=0; i<comments.length; ++i) {
    var comment = comments[i];
    var cid = commentID(comment);
    if(cid <= prevCID) continue;
    if(cid > lastCID) lastCID = cid;
    if (!highlightUnvisited && prevCID === 0) continue;
    comment.classList.add('new');
    }

    return lastCID;
    }

    guestinxo, 02 Октября 2018

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