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

    +157

    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
    //проверка привата
    function NewPrivat()
     {
      global $connect, $user, $rid;
      $nup = intval(mysql_result(mysql_query("SELECT COUNT(id) FROM `privmsg_inbox` WHERE `mepl`='0' AND `id_user`='".$user['id']."'", $connect),0));
      if($nup != 0)
      {
       echo '<div class="bar">
             <a href="privmsg.php';
       if ($rid['id']!=0) echo '?idr='.$rid['id'];
       echo '"><b>Новые сообщения: <font color="red">'.$nup.'</font></b></a>
             </div>';
    
      }
      return ;
     }
    
    // ..................
    
    //выщитываем сколько онлайн
    function online()
     {
      global  $user, $connect;
      $time = time();
      $in_on_line = '1500';
      $result_update = mysql_query("DELETE FROM `online` WHERE `unix`+$in_on_line < $time OR `login_id` = '".$user['id']."'", $connect);
      $result_insert = mysql_query("INSERT INTO `online` (`ip`,`unix`, `login`, `login_id`) VALUES ('".IPUSR."','$time', '".$user['nick']."', '".$user['id']."')", $connect);
      $online = mysql_num_rows(mysql_query("SELECT `id` FROM `online` WHERE `login`<>''", $connect));
      return $online;
     }
    
    
    // ..................
    
    //проверка авторизации
    function user()
     {
      global $connect;
      if(isset($_SESSION['login']) and isset($_SESSION['pass']))
       {
        $l = acs($_SESSION['login']);
        $p = acs($_SESSION['pass']);
        $user = mysql_fetch_assoc(mysql_query("SELECT * FROM `users` WHERE `nick`='$l' AND `pass`='$p' ;", $connect));
       }
      elseif (isset($_REQUEST['id']))
       {
        //$id = intval($_REQUEST['id']); 
    	//$user = mysql_fetch_assoc(mysql_query("SELECT * FROM `users` WHERE `id`='$id'", $connect));
       } 
      else $user=false; 
      return $user; 
     }
    
    
    function php_decode($in){

    очень удобно создавать вот такие функции когда используются они только один раз в скрипте

    Запостил: Morgan, 08 Августа 2010

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

    • Ну какой же говно-код то, Морган? Я так же делаю чтобы однородный код был. Удобно когда у тебя все обращения к БД сконцентрированы в одном модуле. Если их в основной код выполнения запроса запихать, то кашка скорее всего получится.
      Если функция по длине превышает один экран, то стопудова бью на подфункции — психологически проще воспринимается код, в котором весь процесс на микрозадачи разбит.
      Ответить
      • я не зря добавил "используются они только один раз в скрипте"
        Ответить
        • Я на это как раз внимание и обратил. Чего в этом плохого то? Я лично смотрю с точки зрения организации исходников. Или вы любитель пооптимизить на скорость раз так вызов функции смущает?
          Ответить
        • Морган, вот я на тебя посмотрю как ты будешь пытаться понять логику выполнения запроса при условии что здесь будут раскрыты те три функции, которые используются только в одном месте:
          $data = diary_day_edit_prepare($storage, $date, $_SERVER['REQUEST_METHOD'] == 'POST');
          if (is_int($data))
          {
          	if ($data == 0)
          	{
          		http_status(404, 'Resource Not Found');
          		gc_out('exec/cgens/html/web/webres.not-found.gc.php');
          	} else {
          		http_status(503, 'Resource Unavailable');
          		gc_out('exec/cgens/html/web/webres.unavailable-maybe-exists.gc.php');
          	};
          	return;
          };
          
          /* - - - >  Уровень веб-ресурса < - - - */
          
          http_allow('GET,POST');
          
          if ($_SERVER['REQUEST_METHOD'] == 'POST')
          {
          
          	$data['header'] = (string)@$_POST['data_header'];
          	$data['content'] = (string)@$_POST['data_content'];
          
          	if (isset($_POST['act_preview'])) $show_preview = true;
          
          	require_once('exec/takers.inc.php');
          	$comps = array();
          	if (!diary_day_edit_take($data, $comps))
          	{
          		$state = 'bad-input';
          	} elseif (isset($_POST['act_save'])) {
          		if (!diary_save_day($storage, $data))
          		{
          			$state = 'saving-error';
          		} else {
          			require('exec/cgens/html/web/diary-day.saved.gc.php');
          			return;
          		};
          	};
          };
          Ответить
          • Код валидации для некоторых сложных объектов занимает ни одну сотню строк. Запихал в одну функцию, которую разбил на ещё десяток. Единичный вызов функции — плохо?! Зато отпадает вопрос об "умении разбираться в чужом коде".
            Ответить
            • ты не видишь разницы между своим примером и кодом который указан чуть выше.
              ты не можешь оценить степень Г. кода моего кода, как и я степень полезности твоего.
              Ответить
          • дайте полные исходники, попробуем разобраться
            Ответить
    • Читаю я комменты и понимаю, что мимолётные мысли об MVC, ORM и шаблонах проектирования здесь будут совершенно не к месту... (Без желания кого-то обидеть, просто констатирую факт.)
      Ответить
      • можно и без них, только с ними намного легче, а без них - жисть дерьмо
        Ответить
      • а что делать?
        набижали...
        Ответить
        • на самом деле - я тут подумал - что все зависит от уровня кодера. Например, школьникам не обьяснишь сразу же в первый месяц обучения, в чем польза этих всех дел... Вот они и будут клепать подобное говнецо, обреченное на отречение и перегной...

          другое дело, если стаж у кодера есть, а он все "по старинке" кодит, и сидит в своем говне, орет: "а зачем мне это знать, я и без этого прекрасно живу!"

          и еще другое дело, что сия круть может быть непригодна для конкретной задачи. Это либо низкоуровневые задачи типа драйверов, либо простые утилитки.

          и еще - в той же жабе, где все, кроме примитивов, является обьектом, примитивный хелловорлд, который на многих языках пишется в одну строчку, сразу требует ООП-подхода на 5 строк...
          Ответить
          • вы случайно с кепом не сеймперсуны?

            это я не в плане поехидничать, а про то, что "все действительно так", однако, всегда есть "но". вот они:

            - простая, но полезная утилка с уем, от которой нельзя просто и быстро открутить гуй, чтобы приделать кли или наоборот, с хардкоженными параметрами вроде "E:\MyFolder\exp0rt.xml" и отсутствующими кодестайлом и нейминг конвеншеном - это, согласитесь, печально.

            - к драйверу, конечно же, технология ORM врядли применима, но почему бы не использовать хотя бы структурные шаблоны? (тонкий намек, на то что шаблоны - это огого!)

            -в жабе хелоуворлд занимает три строчки и две закрывающие скобки. а еще:

            в си шарпе, где, кажется, все является объектами, примитивный хелоуворлд занимает 7 строчек (елси с неймспейсом) и да, требует ООП подхода.

            в С99 (примитивы и неочевидные объекты), обжектив С и в С++ хелоуворд занимет 5 строк и сразу требует знания стандарта, но не требует ООП.

            в, руби, пайтоне и пхп, где все является объектом а о примитивах можно только мечтать, примитивный хелоуворлд занимает одну строчку.

            а в хаскекле, строго-настрого типизтрованном, примитивный хелоуворлд занимает две строчки и сразу требует функционального подхода.

            Значит ли это что шарп круче всех? Или что порог вхождения у хаскеля чуть выше чем у пхп? Или на пайтоне нельзя писать в функцональном стиле?

            Вывод для меня не очевиден.
            Ответить
            • Эээ, прошу прощения,
              > в, руби, пайтоне и пхп, где все является объектом
              За два первых не скажу, но где это в пхп всё является объектом? Там ООП-то появилось только в чётвёртой версии, а начиная с пятой на него стало можно смотреть без смеха. Там замыкания-то только родились (5.3), да и то аки костыль.
              Ответить
          • > школьникам не обьяснишь сразу же в первый месяц обучения, в чем польза этих всех дел...
            Ну нет, в чём польза-то, на пальцах ещё можно растолковать, но вот научить этим пользоваться как раз будет проблематично - "всё равно что человека, едва научившегося держаться на воде, заставить переплыть Берингов пролив" (цопирайт С. Лукьяненко). А если человек не совсем нуб, то вот тут встанет как раз вторая проблема:
            > а он все "по старинке" кодит
            ... - то есть как его убедить, что "все эти дела" вообще-то не для труЪ-йоба-пацанскости придумали и вовсе не от хорошей жизни, а по необходимости. По себе могу сказать, что реальная польза ощущается после нескольких проектов, сделанных по-новому, когда, во-первых, набивается рука в новых привычках программирования, а, во-вторых, на практике по собственному опыту убеждаешься, что это действительно офигенно, и забываешь про всякие там while ($row = mysql_fetch_assoc($result)) echo $row['item']; как про кошмарный сон и происки нечистого.
            Ответить
      • Какие паттерны, чувак?

        Погляди, они юзают ГЛОБАЛЬНЫЕ ПЕРМЕННЫЕ (_POST)

        Хотя уже лет 25 как все знают, что юзать их не нужно
        Ответить
    • мда, без функций конечно будет круче, все одним ровным слоем...
      Ответить

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