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

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

    0

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    for (const auto& item : items)
    {
      if (!item.isValid())
        continue;
      else
      {
        // 200 строк кода
      }
    }

    Что делать с такими колегами?

    Elvenfighter, 21 Августа 2019

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

    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
    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
    <?
    error_reporting(E_ALL ^ E_DEPRECATED);
    defined('_SECUR_GAMES') or die('Unknown Error!');
      function bbcode($var = "") {
            $var = preg_replace('#\[b\](.*?)\[/b\]#si', '<span style="font-weight: bold;">\1</span>', $var);
            $var = preg_replace('#\[i\](.*?)\[/i\]#si', '<span style="font-style:italic;">\1</span>', $var);
            $var = preg_replace('#\[u\](.*?)\[/u\]#si', '<span style="text-decoration:underline;">\1</span>', $var);
            $var = preg_replace('#\[s\](.*?)\[/s\]#si', '<span style="text-decoration: line-through;">\1</span>', $var);
            $var = preg_replace('#\[big\](.*?)\[/big\]#si', '<big>\1</big>', $var);
            $var = preg_replace('#\[small\](.*?)\[/small\]#si', '<small>\1</small>', $var);
            $var = preg_replace('#\[center\](.*?)\[/center\]#si', '<center>\1</center>', $var);
            $var = preg_replace('#\[right\](.*?)\[/right\]#si', '<span class="right">\1</span>', $var);
            $var = preg_replace('#\[hr\](.*?)\[/hr\]#si', '<hr>\1</hr>', $var);
            $var = preg_replace('#\[br\](.*?)\[/br\]#si', '<br>\1</br>', $var);
            $var = preg_replace('#\[p\](.*?)\[/p\]#si', '<p>\1</p>', $var);
            $var = preg_replace('#\[gold\](.*?)\[/gold\]#si', '<span style="color:gold">\1</span>', $var);       
          return $var;
        }
        function calculate_age($birthday) {
          $birthday_timestamp = strtotime($birthday);
          $age = date('Y') - date('Y', $birthday_timestamp);
          if (date('md', $birthday_timestamp) > date('md')) {
            $age--;
          }
          return $age;
        }
    	function generatePassword($length=8){
    	  $chars = 'qwedazxscvfrtgnbhyujmkiolp1234567890WEDAZXSCVFRTGNBHYUJMKIOLP';
    	  $numChars = strlen($chars);
    	  $string = '';
    	  for ($i = 0; $i < $length; $i++) {
    	    $string .= substr($chars, rand(2, $numChars) - 1,2);
    	  }
    	  return $string;
    	}
    	function generatePass_word($length=8){
    	  $chars = 'qcvfrtgnbhyujmlp567890WEDAZXSCVFRBHYIOLP';
    	  $numChars = strlen($chars);
    	  $string = '';
    	  for ($i = 0; $i < $length; $i++) {
    	    $string .= substr($chars, rand(2, $numChars) - 1,2);
    	  }
    	  return $string;
    	}
    	function generateLogin($length=8){
    	  $chars = 'qweascv8fjmk6iolp123450WEXSCVFRTGNUOLP';
    	  $numChars = strlen($chars);
    	  $string = '';
    	  for ($i = 0; $i < $length; $i++) {
    	    $string .= substr($chars, rand(2, $numChars) - 1,2);
    	  }
    	  return $string;
    	}
    	function check($str)
    	{
    		$str = htmlentities($str, ENT_QUOTES, 'UTF-8');
    		$str = str_replace("\'", "&#39;", $str);
    		$str = str_replace("\r\n", "<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('\\', "&#92;", $str);
    		$str = str_replace("|", "I", $str);
    		$str = str_replace("||", "I", $str);
    		$str = str_replace("/\\\$/", "&#36;", $str);
    		$str = str_replace("[l]http://", "[l]", $str);
    		$str = str_replace("[l] http://", "[l]", $str);
    		$str = mysql_real_escape_string($str);
    		return $str;
    	}
    	class PAGINGS
    	{
    		public $total;
    		private $total_pages;
    		private $page;
    		private $start;
    		private $end;
    		public $get;
    		public $count_get;
    
    		public function __construct($size, $query)
    		{
    			$this->total = mysql_result(mysql_query(preg_replace('~SELECT (.*?) FROM~isU', 'SELECT COUNT(*) FROM', $query).' ;'), 0);
    			$this->total_pages = ceil($this->total / $size);
    			$this->page = isset($_POST['page']) ? $_POST['page'] : $_GET['page'];
    			$this->page = !empty($this->page) && ctype_digit($this->page) && $this->page >= 1 && $this->page <= $this->total_pages ? $this->page : 1;
    			$this->start = ($this->page * $size) - $size;
    			$this->end = $this->start + $size < $this->total ? $this->start + $size : $this->total;
    			$this->get = mysql_query($query.' LIMIT '.$this->start.', '.htmlspecialchars(stripslashes(addslashes(strip_tags(mysql_real_escape_string(trim($size)))))).' ;');
    			$this->count_get = @ mysql_num_rows($this->get);
    		}

    Взял перл из спора с каким-то мамкиным экспертом, утверждавшим "функциональщина - сраный легаси, ооп - наше всё". Здесь ещё куча алмазиков:
    https://bymas.ru/downloads/view/77400

    monobogdan, 05 Августа 2019

    Комментарии (95)
  4. C++ / Говнокод #24633

    −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
    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
    /*
    	Программа для генерации и вывода разряженной матрицы
    	Специально для сайта govnokod.ru
    */
    #include <iostream>
    #include <cstdlib>
    #include <ctime>
    
    // Объявление переменных
    const int first_index_size=20;
    const int second_index_size=50;
    char matrix_array[first_index_size][second_index_size];
    
    enum border_style{
    	line,single 
    };
    
    void borders(border_style matrix_border)
    {
    	switch(matrix_border)
    	{
    		case 0:
    			for(int i=0; i<(second_index_size+2); i++)
    				std::cout<<"#";
    			std::cout<<"\n";
    			break;
    		case 1:
    			std::cout<<"#";
    	}
    }
    
    void rand_func_init()
    {
    	// Инициализация функции rand()
    	srand(time(0));
    	rand();
    }
    
    void matrix_init_zero()
    {
    	// Инициализация матрицы нулём	
    	for(int i=0; i<first_index_size; i++)
    		for(int t=0; t<second_index_size; t++)
    			matrix_array[i][t]=0;
    }
    
    void matrix_init_rand()
    {
    	// Заполнение матрицы
    	for(int i=0; i<first_index_size; i++)
    	{
    		int init_num=rand()%11;
    		while(init_num)
    		{
    			init_num--;
    			matrix_array[i][rand()%50]=149;
    		}
    	}
    }
    
    void matrix_print()
    {
    	// Вывод матрицы	
    	borders(line);
    	for(int i=0; i<first_index_size; i++)
    	{
    		borders(single);
    		for(int t=0; t<second_index_size; t++)	
    			std::cout<<matrix_array[i][t];
    		borders(single);
    		std::cout<<"\n";
    	}
    	borders(line);
    }
    
    int main()
    {
    	rand_func_init();
    	matrix_init_zero();
    	matrix_init_rand();
    	matrix_print();
    	return 0;
    }

    Разряженная матрица 20x50.
    Количество ненулевых значений от 0 до 10.

    BelCodeMonkey, 18 Августа 2018

    Комментарии (95)
  5. Swift / Говнокод #24592

    +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
    // NextViewController.swift
    
    override func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) {
        NSUserDefaults.standardUserDefaults().setInteger(indexPath.row, forKey: "Selected offense")
    		
        let offense: NSDictionary = self.offenses.objectAtIndex(indexPath.row) as NSDictionary
        let id: Int = offense.objectForKey("id") as Int
        let title: String = offense.objectForKey("title") as String
        NSUserDefaults.standardUserDefaults().setInteger(id, forKey: "Selected offense id")
        NSUserDefaults.standardUserDefaults().setObject(title, forKey: "Selected offense title")
    }
    
    // PreviousViewController.swift
    
    override func viewDidAppear(animated: Bool) {
        super.viewDidAppear(animated)
        hideKeyboard()
        tableView.reloadData()
    }
    	
    func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! {
        let kCellIndetifier: String = "NewOffenseCell"
        var cell: UITableViewCell = tableView.dequeueReusableCellWithIdentifier(kCellIndetifier, forIndexPath: indexPath) as UITableViewCell
    		
        if cell == nil {
            cell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: kCellIndetifier)
        }
    		
        cell.text = NSUserDefaults.standardUserDefaults().stringForKey("Selected offense title")
        cell.font = UIFont.systemFontOfSize(20)
        return cell
    }

    Реализуем колбэки *лицорука*

    def, 06 Августа 2018

    Комментарии (95)
  6. JavaScript / Говнокод #19754

    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
    38. 38
    function kvadrt() {
        d = document
        var a = Number(d.form1.num1.value)
        var b = Number(d.form1.num2.value)
        var c = Number(d.form1.num3.value)
        var diz = eval(Math.pow(b, 2) - 4 * a * c)
        var e = eval((-b + Math.sqrt(diz)) / (2 * a))
        var e1 = eval((-b - Math.sqrt(diz)) / (2 * a))
        var e2 = eval(-c / b)
        var e3 = eval(-b / 2 * a)
        var x1 = Number(d.form1.x1.value)
        var x2 = Number(d.form1.x2.value)
        if (a == 0 && b == 0 && c == 0) {
            x1 = "x принадлежит R";
            x2 = "x принадлежит R";
        } else
        if (a == 0 && b == 0 && c != 0) {
            x1 = "Решений нет";
            x2 = "Решений нет";
        } else
        if (a == 0 && b != 0 && c != 0) {
            x1 = eval(e2);
            x2 = " ";
        } else
        if (a != 0 && diz > 0) {
            x1 = eval(e);
            x2 = eval(e1);
        } else
        if (a != 0 && diz == 0) {
            x1 = eval(e3);
            x2 = " ";
        } else {
            x1 = "Решений нет";
            x2 = "Решений нет";
        }
        d.form1.x1.value = x1;
        d.form1.x2.value = x2;
    }

    Заканчиваю этот семестр, и ну его нахрен, это преподавательство.

    Actine, 05 Апреля 2016

    Комментарии (95)
  7. Куча / Говнокод #18026

    +143

    1. 1
    http://habrahabr.ru/company/neuronspace/blog/254671/

    Захотелось поделится с сообществом.

    Vasiliy, 20 Апреля 2015

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

    +154

    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
    if ((new Date(2014, 0, 1)).getHours() != 0 || new Date(2015, 0, 7).getHours() != 0) {
      // Переопределяем конструктор
      Date = (function (NativeDate) {
        var NewDate = function (Y, M, D, h, m, s, ms) {
          var length = arguments.length;
          var date = length === 1 && String(Y) === Y ? // isString(Y)
              new NativeDate(NewDate.parse(Y)) :
                  length >= 7 ? new NativeDate(NativeDate.UTC(Y, M, D, h, m, s, ms)) :
                  length >= 6 ? new NativeDate(NativeDate.UTC(Y, M, D, h, m, s)) :
                  length >= 5 ? new NativeDate(NativeDate.UTC(Y, M, D, h, m)) :
                  length >= 4 ? new NativeDate(NativeDate.UTC(Y, M, D, h)) :
                  length >= 3 ? new NativeDate(NativeDate.UTC(Y, M, D)) :
                  length >= 2 ? new NativeDate(NativeDate.UTC(Y, M)) :
                  length >= 1 ? new NativeDate(Y) :
              new NativeDate();
          if (length == 0) {
            date = new NativeDate(+date - date.getTimezoneOffset() * 60000);
          }
          date.constructor = NewDate;
          return this instanceof NativeDate ? date : date.toString();
        };
    
        if (NativeDate.now) {
          NewDate.now = function () {
            return new NewDate().getTime();
          };
        }
        if (NativeDate.UTC) {
          NewDate._UTC = NativeDate.UTC;
          NewDate.UTC = function (Y, M, D, h, m, s, ms) {
            var _date = new NewDate(NewDate._UTC.apply(this, arguments));
            return +_date - _date.getTimezoneOffset() * 60000;
          };
        }
        NewDate.prototype = NativeDate.prototype;
        NewDate.prototype.constructor = NewDate;

    И так далее, "фикс" для кривых таймзон в JS на винде http://habrahabr.ru/post/243685/

    asavartsov, 21 Ноября 2014

    Комментарии (95)
  9. Куча / Говнокод #16109

    +136

    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
    // Playground - noun: a place where people can play
    
    import Cocoa
    
    // Изначальный массив и ссылка на него
    var originalArray: Int[] = [1, 2, 3];   // [1, 2, 3]
    var extraArray = originalArray          // [1, 2, 3]
    
    // Поменяем во втором массиве элемент
    extraArray[0] = 666
    
    // Оппа изменился и в первом
    extraArray                              // [666, 2, 3]
    originalArray                           // [666, 2, 3] O_o
    
    // Не делись!
    extraArray.unshare()
    
    // Теперь они живут своей жизнью
    extraArray[0] = 333
    
    extraArray                              // [333, 2, 3] okay
    originalArray                           // [666, 2, 3]
    
    // А вот тут будет наоборот
    var anotherArray = originalArray        // [666, 2, 3]
    
    // auto unshare
    anotherArray.append(-1)
    anotherArray.removeLast()
    
    anotherArray[0] = 777
    
    anotherArray                            // [777, 2, 3]
    originalArray                           // [666, 2, 3]
    
    // Словари вообще не так себя ведут, всегда копирование
    
    var originalDictionary = [ 1: "hello", 2: "world"]
    var extraDictionary = originalDictionary
    extraDictionary[1] = "no way"
    
    originalDictionary      // [ 1: "hello", 2: "world"]
    extraDictionary         // [ 1: "no way", 2: "world"]

    Я восхвалял Свифт, а же его и обосру.
    В Свифте есть массивы и словари. Так вот словари при присваивании или передаче как аргумента копируются. Окей. Теперь массивы. Они, оказывается, не копируются, а разделяют значения между собой! Т. е. передал массив в ф-цию, она там что-то испортила, массив испортился везде, где засветился.
    Чтобы эту фигню остановить, нужно вызывать спец. функцию unshare
    Но это еще не все. При некоторых операциях с массивами (потенциально меняющих их длину) unshare делается автоматически!

    Предвижу классическую ошибку свифтокодеров: ожидал, что массив поменяется, а он не поменялся снаружи; или передал массив, поюзал, а он снаружи неожиданно испортился. Плюс путаница, что базовые типы ведут себя по-разному.
    Оправдание Apple: мы хотели перформанс С-массивов в Свифте, поэтому сделали эту хрень.

    tirinox, 04 Июня 2014

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

    +27

    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
    int enumDevices(DevInfo* &lst) {
        int count = 0;
        DevInfo* tmp = NULL;
        Device device;
        for (int i = 0; i < MAXDEVICES; i++)
            if (device = OpenDevice(i)) {
                count++;
                realloc(tmp, sizeof(DevInfo)*count);
                ReadInfo(device, &tmp[count-1]
            }
        if (count == 0) return 0;
        lst = new DevInfo[count];
        for (int i = 0; i < count; i++)
            lst[i] = tmp[i];
        free(tmp);
        return count;
    }
    
    //................
    
    DevInfo* list;
    int devcount = enumDevices(list);
    /* работаем со списком */
    delete[] list;

    Самому стыдно.

    Vindicar, 06 Января 2014

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

    +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
    Говнокод рекурсивный
    
    Проходим по ссылке 
    http://govnokod.ru/comments/14234/rss
    
    Смотрим на 5 строку
     <link>http://govnokod.ru/comments/14301/rss</link>
    
    Переходим по 
    http://govnokod.ru/comments/14301/rss
    
    
    Запрашиваемая страница не найдена!
    Возможно, её и не было никогда
    
    Так и должно быть?

    kegdan, 02 Января 2014

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