1. PHP / Говнокод #17781

    +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
    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
    <?php
    // define variables and set to empty values
    $fNameErr = $lNameErr = $passErr = $pconfErr = $bDayErr = $genderErr = $ageErr = $progErr = $emailErr = $websiteErr = "";
    $fname = $lname = $password = $passconfirm = $day = $month = $year = $email = $gender = $age = $plang = $email = $website = "";
    $validate = TRUE;
    
    if ($_SERVER["REQUEST_METHOD"] == "POST")
    {
      $fname = test_input($_POST["fname"]);
      $lname = test_input($_POST["lname"]);
      $password = test_input($_POST["password"]);
      $passconfirm = test_input($_POST["passconfirm"]);
      $day = test_input($_POST["day1"]);
      $month = test_input($_POST["month1"]);
      $year = test_input($_POST["year1"]);
      $email = test_input($_POST["email"]);
      $website = test_input($_POST["website"]);
    }
     
    function test_input($data)
    {
      $data = trim($data);
      $data = stripslashes($data);
      $data = htmlspecialchars($data);
      return $data;
    }
     
    if(!$_POST)
    {
      $validate = FALSE;
    }
     
     
    if ($_SERVER["REQUEST_METHOD"] == "POST")
    {
     
     
     
      //validation of forename
      if(!empty($_POST["fname"]))
      {
        if (!preg_match("/^[a-zA-Z '-]*$/", $fname))
        {
          $fNameErr = "Only letters, - , ' and whitespaces are allowed";
          $fname = "";
          $validate = FALSE;
        }
        else
        {
          $fname = test_input($_POST["fname"]);
        }
      }
      else
      {
        $fNameErr = "Forename is required";
        $validate = FALSE;
      }
     
      //validation of surname
      if (!empty($_POST["lname"]))
      {
        if (!preg_match("/^[a-zA-Z '-]*$/", $lname))
        {
          $lNameErr = "Only letters, - , ' and whitespaces are allowed";
          $lname = "";
          $validate = FALSE;
        }
        else
        {
          $lname = test_input($_POST['lname']);
        }
      }
      else
      {
        $lNameErr = "Last name is required";
        $validate = FALSE;
      }

    Только начал кодить на пхп, интересно мнение более опытных товарищей - можно ли подобное отнести к говнокоду/ быдлокоду?) просто были уже подобные комментарии относительно этого кода

    Запостил: ragie, 13 Марта 2015

    Комментарии (27) RSS

    • Это ппц какой быдлокод. Извини уж. Ничо, понимание придет со временем, не расстраивайся )
      Ответить
      • а если вкратце, то что именно здесь неправильно? так, чисто на будущее)
        Ответить
    • Можно отнести и к быдлокоду, и к говнокоду.

      Почему это быдлокод: цель данного "проекта" не очень-то благородная, как мне кажется. Кратковременная халтура за еду или вовсе лаба1.

      Почему это говнокод:
      0. Говёнистые названия переменных и методов.
      1. Очевидно то, что это часть какого-то велосипеда (а то и троллейбуса).
      2. Ни малейшего следа рефакторинга. Смотрится громоздко, неудобно; и будет падать, вызывая пронзительную жопную боль при отладке.
      Ответить
      • Это лабораторная работа и есть :)
        Ответить
        • Ну ладно, быдлокод, вообще – вещь неплохая. Особенно когда он денежки какие-нибудь приносит.
          А вот говнокод самому говнокодеру неприятности создаёт.
          Программирование – это не только печатание волшебных заклинаний, но и медитация, дичайший духовный импрув. Стоит, время от времени, посвещать себя размышлению над тем, что должно происходить за пределами одного скрипта, класса и т.д.; как это можно упростить, ускорить и украсить.
          На самом деле, пытаясь писать хитровывернутые строчки внутри одного метода, говнокодер утруждает свой мозг больше, чем в случае, если бы он хотя бы чуть-чуть умел проектировать.
          Ответить
        • Проболтался. Будут минусовальди.
          Ответить
      • научите, как правильно отлаживать пхп?
        Ответить
        • > как правильно отлаживать пхп
          Как-то так:
          1) все изменения вносишь только на боевом сервере;
          2) включаешь display_errors = On;
          3) в непонятные места вставляешь var_dump или print_r.
          Ответить
          • вы бы еще алертов мне насоветовали
            Ответить
            • > алертов
              Можем и алертов насоветовать:
              function alert($s) {
                  echo "<script type='text'/javascript'>alert('$s')</script>";
              }
              Ответить
              • помоему вы и сами не умеете правильно дебажить пхп, только путаете новичков и тешите собственное ЧСВ
                Ответить
          • 4) ни в коем случае не пользоваться VCS, а судорожно откатывать изменения по памяти
            Ответить
            • А как же index1.php, index_test.php, indexdsadas.php и комментирование кусков кода вместо удаления?
              Ответить
              • не труъ

                рядом должен быть открыть блокнот и всем отдельные куски кода "про запас". Перед каждым редактированием кусок, который собираются редактировать, копипастится в блокнот (с отступом в 2 строки) и никогда от туда не удаляется
                Ответить
                • Ну-ну, не надо копипастить.

                  1. Именуем блоки
                  2. Пишем микрофреймворк для работы с блоками
                  Вот ядро. Осталось портировать на ПХП и добавить загрузку файла с кусками текста.
                  function parse(txt){
                    var blocks = {};
                    txt.split(/(?:\r\n|\r|\n){2,}/).forEach(function(block){
                      var name = (/^\s*\/\/\s*block\s*(\S+)/.exec(block) || [])[1];
                      blocks[name] = block;
                    });
                    return blocks;
                  }
                  
                  function translate(txt, blocks){
                    return txt.replace(/\/\/\s*include\s*(\S+)/g, function(_, name){
                      return (blocks[name] || 'alert("No code block ' + name + '")') + '\n';
                    });
                  }

                  3. Используя фреймворк, пишем простой и понятный код вида
                  // include e56edff8-518d-435f-b1d5-83c1edfab5e1
                  //include main.2015.03.14
                  // include hello-world
                  }
                  // include ВасяНеУдаляй4

                  http://ideone.com/xGq1n8
                  Ответить
                  • Какая прелесть, пойду git удалю, на кой он мне теперь.
                    Ответить
        • xdebug
          Ответить
    • Твой код - нечитабельная лапша. Я подобную хуйню пишу только на баше для упрощения каких-нибудь действий. И, естественно, не сохраняю.

      Лучше копай в сторону фреймворков: Zend, yii или еще что-то нибудь.
      Еще лучше копай в сторону питона, скалы и других нормальных языков.
      Ответить
      • Yii - нормальный фреймворк. Хорошая шутка!
        Ответить
    • > интересно мнение более опытных товарищей

      интересно
      оочень интересно
      совсем интеерсно
      Ответить
    • >test_input($_POST["fname"]);
      Дальше не читал.
      Ответить

    Добавить комментарий