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

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

    +165

    1. 1
    2. 2
    mov eax, 4
    add dx, eax

    Во время службы попал я в ракетные войска и для облегчения жизни своей писал себе разные прожки старые бабки всё время как-бы невзначай крутились возле кабинета, и всё спрашивали, что ты там затих, почему тебя не слышно? первый раз я не ответил, так они начали ломиться в дверь, и орать, что ты там молчишь, что с тобой? начали материться, и говорить, что вообще дверь с петель снимут, алсо, они ругаются, если я компилю в дебаг режиме и отдаю заму, причём не просто вконце тестов, а непосредственно после дебага, мотивировал это тем, что лишний мусор, и сами потом мне говорили: вот мы скомпилим в релиз, и ты так делай! однажды я прожить сел, и слышу, бабки где-то у двери встали в отдалении, ну я в дебаге цикл прогнал, и на пол накарачики присел, а там щель очень широкая снизу у двери, ну я в щель и смотрю, а там бабки на карачиках сидит и в щель смотрит, и мне говорит: ты чё? ебанутый? чё ты там делаешь? бабки кстати всё время какие-то мануалы читают, чтобы писать сразу в машинном коде, пишут в интел прям через хекс редактор, а потом говорят, что ассемблер надоел, и ещё не толкают в esi ссылки на функции. пиздец короче! реальная история. я не тролль

    DesmondHume, 18 Октября 2014

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

    +165

    1. 1
    2. 2
    3. 3
    4. 4
    var shops=new Array();
    shops[shops.length] = new Array('',' ');
    shops[shops.length] = new Array(' The Jewel Box', '135956406_923');
    shops[shops.length] = new Array(' Склад 1', '135956406_923');

    И таких вызовов порядка 2к

    via http://pickpoint.ru/monitoring/

    kopoBko, 24 Сентября 2014

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

    +165

    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
    /* Выше HTML ... */
    
    include_once "config/mysql.php";
    
    $email = $_POST['email'];
    $password = $_POST['password'];
    $confirm = $_POST['confirm'];
    
    $email = stripslashes($email);
    $email = htmlspecialchars($email);
    $email = trim($email);
    
    $password = stripslashes($password);
    $password = htmlspecialchars($password);
    $password = trim($password);
    
    $confirm = stripslashes($confirm);
    $confirm = htmlspecialchars($confirm);
    $confirm = trim($confirm);
    
    /* ... больше ПоХаПэ */

    Мммм... О функциях не слышали?

    volter9, 14 Июня 2014

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

    +165

    1. 1
    objects = objects.concat([something]);

    альтернатива для push наконец найдена

    strax, 21 Марта 2014

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

    +165

    1. 1
    2. 2
    3. 3
    4. 4
    if (($pos = strpos($_SERVER["REQUEST_URI"], "?")) !== false)
    {
    	$params = substr($_SERVER["REQUEST_URI"], $pos+1);
    	parse_str($params, $_GET);

    Bitrix, 404.php

    Посоны не слышали про $_SERVER[QUERY_STRING], зато, сука, неймспейсы знают!

    Boolean, 26 Января 2014

    Комментарии (12)
  7. PHP / Говнокод #14389

    +165

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    /* Здесь мы имеем сраный унаследованный пиздец: количество товара передается в параметрах POST-запроса,
    	имеющих имена вида productX_count, где X - ИД товара. Как предыдущие разработчики разобирали это счастье?
    	Правильно, перебирали все (блядь, ВСЕ, блядь, 20000 штук!) товары и проверяли, есть ли соответствующее
    	значение в запросе.
    */
    
      $items5 = GetIBlockElementList(5);
      while($arItem = $items5->GetNext())
        if(isset($_POST['product'.$arItem['ID']."_id"]) && is_numeric($_POST['product'.$arItem['ID']."_id"]))
        {
          $_PRODUCTS[$arItem['ID']]['count'] = $_POST['product'.$arItem['ID']."_count"];
        }

    В этом коде меня утешает только боль и ненависть комментария.

    clauclauclau, 20 Января 2014

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

    +165

    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
    // comparison arrays - quadruple nesting
        public function comparisonArrays(array $newOptions, array $prevOptions) {
            $diffOptions = array();
            foreach ($newOptions as $key=>$op) {
                if (isset($prevOptions[$key])) {
                    if (is_array($op)) {
                        foreach ($op as $kkk=>$ooo) {
                            if (isset($prevOptions[$key][$kkk])) {
                                if (is_array($ooo)) {
                                    foreach ($ooo as $kk=>$oo) {
                                        if (isset($prevOptions[$key][$kkk][$kk])) {
                                            if (is_array($oo)) {
                                                foreach ($oo as $k=>$o) {
                                                    if (isset($prevOptions[$key][$kkk][$kk][$k])) {
                                                        if ($prevOptions[$key][$kkk][$kk][$k]!=$o) $diffOptions[$key][$kkk][$kk][$k] = $o;
                                                    } else {
                                                        $diffOptions[$key][$kkk][$kk][$k] = $o;
                                                    }
                                                }
                                            } else {
                                                if ($prevOptions[$key][$kkk][$kk]!=$oo) $diffOptions[$key][$kkk][$kk] = $oo;
                                            }    
                                        } else {
                                            $diffOptions[$key][$kkk][$kk] = $oo;
                                        }
                                    }
                                } else {
                                    if ($prevOptions[$key][$kkk]!=$ooo) $diffOptions[$key][$kkk] = $ooo;
                                }
                            } else {
                                $diffOptions[$key][$kkk] = $ooo;
                            }
                        }
                    } else {
                        if ($prevOptions[$key]!=$op) $diffOptions[$key] = $op;
                    }
                } else {                    
                    $diffOptions[$key] = $op;
                }    
            }        
            return $diffOptions;        
        }

    crook, 11 Ноября 2013

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

    +165

    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
    function CheckNumField(value)
    {
        for(var i=0; i<value.length; i++)
        {
            switch(value.substr(i,1))
            {
                case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case '.':
                    return true;
                break;
                default:
                    return false;
                break;
            }
        }
    }

    Проверочка текстового поля...

    webelancer, 13 Сентября 2013

    Комментарии (93)
  10. Pascal / Говнокод #13750

    +165

    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
    Пишу менеджер автозапусков:
    
    type
      tregkey = class
        rootkey: hkey;
        keyname: string;
        param: string;
        value: string;
        function Rootkeyname:string;
      end;
    
    procedure TForm1.UpdateAutoruns;
    var
      i: integer;
      lst: tlistitem;
      rlist: tobjectlist;
      keyname: string;
      tregobj:tregkey;
    begin
      rlist := tobjectlist.create;
      ListView4.items.clear;
      try
        regread(windows.HKEY_CURRENT_USER, 'Software\Microsoft\Windows\CurrentVersion\Run',rlist);
        regread(windows.HKEY_CURRENT_USER,
          'Software\Microsoft\Windows\CurrentVersion\RunOnce', rlist);
        regread(windows.HKEY_CURRENT_USER,
          'Software\Microsoft\Windows\CurrentVersion\RunServices', rlist);
        regread(windows.HKEY_CURRENT_USER,
          'HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run', rlist);
        regread(windows.HKEY_CURRENT_USER,
          'HKEY_CURRENT_USER\Software\Microsoft\ Windows NT\CurrentVersion\Windows', rlist);
        regread(windows.HKEY_LOCAL_MACHINE,
          'Software\Microsoft\Windows\CurrentVersion\Run', rlist);
        regread(windows.HKEY_LOCAL_MACHINE,
          'Software\Microsoft\Windows\CurrentVersion\RunOnce', rlist);
        regread(windows.HKEY_LOCAL_MACHINE,
          'Software\Microsoft\Windows\CurrentVersion\RunServices', rlist);
        regread(windows.HKEY_LOCAL_MACHINE,
          'Software\Microsoft\Windows\CurrentVersion\RunServicesOnce', rlist);
        regread(windows.HKEY_LOCAL_MACHINE,
          'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ Windows\CurrentVersion\RunOnceEx', rlist);
        for i := rlist.Count - 1 downto 0 do
        begin
          tregobj:=tregkey(rlist[i]);
          lst := ListView4.items.Add;
          keyname := format('%s\%s\%s', [tregobj.Rootkeyname,tregobj.keyname, tregobj.param]);
          lst.Caption :=keyname;
          lst.SubItems.AddObject(tregobj.value,tregobj);
        end;
      finally
        rlist.Free;
      end;
    end;
    
    
    
    В итоге этот код
    
    procedure TForm1.sBitBtn20Click(Sender: TObject);
    var
      i:integer;
      reg:tregistry;
    begin
        for i:= listview4.Items.Count -1 downto 0 do
        showmessage(tregkey(listview4.Items[i].subitems.Objects[0]).rootkeyname);
    end;
    
    либо вызывает ошибку доступа либо пустой messagebox. 
    В чем лажа? Я тупо не вижу ошибки.

    Stertor, 07 Сентября 2013

    Комментарии (134)
  11. PHP / Говнокод #13703

    +165

    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
    function register()
    {
        if (!empty($_POST)) {
            $msg = '';
            if ($_POST['user_name']) {
                if ($_POST['user_password_new']) {
                    if ($_POST['user_password_new'] === $_POST['user_password_repeat']) {
                        if (strlen($_POST['user_password_new']) > 5) {
                            if (strlen($_POST['user_name']) < 65 && strlen($_POST['user_name']) > 1) {
                                if (preg_match('/^[a-z\d]{2,64}$/i', $_POST['user_name'])) {
                                    $user = read_user($_POST['user_name']);
                                    if (!isset($user['user_name'])) {
                                        if ($_POST['user_email']) {
                                            if (strlen($_POST['user_email']) < 65) {
                                                if (filter_var($_POST['user_email'], FILTER_VALIDATE_EMAIL)) {
                                                    create_user();
                                                    $_SESSION['msg'] = 'You are now registered so please login';
                                                    header('Location: ' . $_SERVER['PHP_SELF']);
                                                    exit();
                                                } else $msg = 'You must provide a valid email address';
                                            } else $msg = 'Email must be less than 64 characters';
                                        } else $msg = 'Email cannot be empty';
                                    } else $msg = 'Username already exists';
                                } else $msg = 'Username must be only a-z, A-Z, 0-9';
                            } else $msg = 'Username must be between 2 and 64 characters';
                        } else $msg = 'Password must be at least 6 characters';
                    } else $msg = 'Passwords do not match';
                } else $msg = 'Empty Password';
            } else $msg = 'Empty Username';
            $_SESSION['msg'] = $msg;
        }
        return register_form();
    }

    Из рассылки PHPWeekly: "A Clean and Secure Open Source PHP Login Script"
    https://github.com/panique/php-login/blob/master/0-one-file/index.php#L98

    Что-то уж очень сильно "Clean".

    brevis, 29 Августа 2013

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