[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: вопрос по стилю
quickxyan
как вы считаете как правильнее писать ?

так:

$var = 1;


или:


$var=1;


то есть ставить пробелы перед и после операцией присваивания?
а то я то так пишу, то так и никак не привыкну к чему нибудь одному. первый вариант вроде читабелнее :)



Спустя 5 минут, 20 секунд (14.07.2011 - 00:24) kovaldm написал(а):
Лучше ставить, чтобы в кучу все не сливалось.

Спустя 7 минут, 11 секунд (14.07.2011 - 00:31) quickxyan написал(а):
спасибо. тогда буду привыкать только так smile.gif

Спустя 1 час, 11 минут, 7 секунд (14.07.2011 - 01:42) inpost написал(а):
quickxyan
А это мелочи, как тебе удобнее - так и пиши, но без пробелов работает быстрее, но ты на пробелах в производительности всё равно не выграешь.

Спустя 27 минут, 52 секунды (14.07.2011 - 02:10) Эли4ка написал(а):
ребята вопрос аналогичный:почему желательнее ставить <?php ?> ,а не <? ?> ?

Спустя 23 минуты, 21 секунда (14.07.2011 - 02:33) tatti написал(а):
Цитата (inpost @ 13.07.2011 - 22:42)
без пробелов работает быстрее
чушь. пхп интерпретатору пробелы до фени.

для тех кто не в курсе --> СЮДА

Спустя 53 минуты, 4 секунды (14.07.2011 - 03:27) quickxyan написал(а):
Эли4ка
потому что это укороченая форма. можно использовать, но нежелательно. так как возможность укороченой формы может быть отключена. еще например xml начинается так <?xml ?>
ну и можно попутать что-ли. я раньше пользовался короткой формой, а потом прочитал в книжке, что не стоит такого делать и быстро переучился wink.gif

Спустя 5 часов, 1 минута, 15 секунд (14.07.2011 - 08:28) twin написал(а):
Цитата (Эли4ка @ 13.07.2011 - 23:10)
ребята вопрос аналогичный:почему желательнее ставить <?php ?> ,а не <? ?> ?

Вроде как в 6-й версии PHP шортеги обещают упразднить. На некоторых хостингах уже запрещены. Поэтому лучше привыкать сразу. Да и совместимость опять же.

Спустя 13 минут, 27 секунд (14.07.2011 - 08:41) twin написал(а):
Цитата (tatti @ 13.07.2011 - 23:33)
Цитата (inpost @ 13.07.2011 - 22:42)
без пробелов работает быстрее
чушь. пхп интерпретатору пробелы до фени.

для тех кто не в курсе --> СЮДА

На самом деле это не совсем так. Интерпретатор перед выполнением "чистит" код от лишних пробелов, переносов строк и комментариев. И разумеется разницы в выполнении нет. Однако требуется дополнительное время на очистку и загрузку файла в оперативку. Пробел - это символ. И он увеличивает вес файла. Соответственно чем меньше файл, тем меньше времени на загрузку.
Но это такой мизер, что совершенно не стоит внимания. А вот читабельность кода стоит.

Приведу пару выдержек отсюда, чтобы не повторяться

Цитата
Вообще то это вполне объяснимо, все с чего то начинали. И начало дается не всем просто. А тут еще на отступы какие то время тратить, скобки расставлять, переносы. Да ну их. Эта мысль посещала почти всех начинающих. Хочется побыстрее получить результат, а что там внутри все равно никто не увидит.

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


Цитата
Так вот. Самый первый и самый важный совет. Сразу же, с первых строк, привыкайте писать не просто красиво, а идеально. Код должен прямо-таки сверкать чистотой и порядком. По крайней мере к этому нужно стремиться.


Цитата
Так что если код написан не совсем грамотно алгоритмически, но идеально и читабельно оформлен, у него гораздо больше шансов быть исправленным. А чем чаще возникает желание исправить свой собственный код, тем выше становится уровень программиста. Наткнувшись на это безобразие и один раз исправив его, мы больше под страхом гильотины не повторим таких ошибок.

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


Цитата
Вообще код нужно писать как стихи, строки должны радовать глаз. По этому еще один совет. Выравнивайте все, что можно выровнять. И старайтесь короткие строки писать выше длинных. Допустим инициализация переменных. Вот смотрите:

    $password = '';
    $num = 0;
    $login = '';
    $page = 1;
    $i = 0;
    $id_country = 'ru';

Вроде бы все по науке. И отступ и операторы пробелом отделены. А все равно каша. А вот так уже почти стихотворение:

    $i          = 0;
    $num        = 0;
    $page      = 1;
    $lуgin      = '';
    $password  = '';
    $id_country = 1;
//  Ou, yee!


Особенно это удачно получается в массивах и запросах. Вот опять для сравнения такой массив:

    $clear = array('id_project' => '','prefix' => '','period'=> '','domain' => '','description' => '','vip' => '',
                  'subject' => '','payment_type'  => '','sms_billing' => '','recommend' => '',
                  'example' => '','date' => '','promo'  => '',                                       
                  );




И вот такой:

    $clear = array(
                      'id_project'    => '',
                      'prefix'        => '',
                      'period'        => '',
                      'domain'        => '',
                      'description'  => '',
                      'vip'          => '',
                      'subject'      => '',
                      'payment_type'  => '',
                      'sms_billing'  => '',
                      'recommend'    => '',                         
                      'example'      => '',
                      'date'          => '',
                      'promo'        => '',
                  );


Ну и так далее.

Спустя 20 минут, 51 секунда (14.07.2011 - 09:02) VolDroN написал(а):
Лучше с пробелами.
Но только не с функциями, например: isset ( $param ) ужасно бесит) причём не одного меня.

Спустя 1 час, 5 минут, 27 секунд (14.07.2011 - 10:08) quickxyan написал(а):
twin
спасибо. объяснил!

VolDroN
тоже бесит)

Спустя 39 минут, 33 секунды (14.07.2011 - 10:47) Эли4ка написал(а):
спасибо..

Спустя 1 час, 11 минут, 53 секунды (14.07.2011 - 11:59) Winston написал(а):
Лучше вообще без пробелов и в одну строчку писать biggrin.gif

Спустя 1 минута, 15 секунд (14.07.2011 - 12:00) neadekvat написал(а):
Цитата (PHPprogramer @ 14.07.2011 - 12:59)
Лучше вообще без пробелов и в одну строчку писать

Обфускаторы так и делают, по-моему. Еще и перемиенные превращаются во что-то вроде $a, $aa и прочее.

Спустя 7 минут, 58 секунд (14.07.2011 - 12:08) VolDroN написал(а):
это можно под конец делать, уже такую, короткую версию заливать и использовать на сайте.
А нормальный код хранить у себя, и понему уже править/писать/дописывать функции

Спустя 2 минуты, 46 секунд (14.07.2011 - 12:11) quickxyan написал(а):
VolDroN
типа сделать свой обфускатор, чтобы если вдруг кто-то как-то получит доступ к файлу - чтобы он бросил его )

Спустя 1 минута, 6 секунд (14.07.2011 - 12:12) neadekvat написал(а):
Ага, только вопрос: "Ну нахрена?"

Спустя 34 секунды (14.07.2011 - 12:13) quickxyan написал(а):
neadekvat
да черт его знает, хотя бы просто для интереса

Спустя 1 минута, 31 секунда (14.07.2011 - 12:14) neadekvat написал(а):
Такие вещи используются для js и css, потому что тут размер файла критичен.

Спустя 3 минуты, 17 секунд (14.07.2011 - 12:17) quickxyan написал(а):
о, а я то думал почему попадаются такие файлы, что там сам черт ногу сломит и почти сразу пропадает охота в них смотреть.

спасибо, буду знать)

Спустя 6 минут, 59 секунд (14.07.2011 - 12:24) inpost написал(а):
tatti
Запусти на серверах этот код:
echo 'text'.$var.'text';
echo 'text' . $var . 'text';

Второй вариант будет работать в 3 раза медленнее на 90% хостингах, при этом даже банальный printf будет его обгонять с %s

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

Спустя 4 минуты, 51 секунда (14.07.2011 - 12:29) neadekvat написал(а):
Цитата (inpost @ 14.07.2011 - 13:24)
Второй вариант будет работать в 3 раза медленнее на 90% хостингах, при этом даже банальный printf будет его обгонять с %s

Так что ж это - мой педантизм тормозит работу сайта? Почему-то мне плевать. Ставил пробелы и буду ставить smile.gif

Спустя 2 часа, 3 минуты, 57 секунд (14.07.2011 - 14:33) twin написал(а):
Цитата
Второй вариант будет работать в 3 раза медленнее на 90% хостингах, при этом даже банальный printf будет его обгонять с %s

Я не поленился измерить на трех своих хостингах. Совершенно никакой разницы.
Вот один из них
Вариант раз
Вариант два.
Угадай, какой из них с пробелами?

Погрешность времени исполнения самого скрипта съедает разницу так, что её вообще измерить невозможно. Тоесть цикл из 100000 итераций выполняется от 0.2 до 0.6, а время "торможения" можно измерить только в долях микросекунды.

Так что это чистой воды теория. Памяти оперативной жрет побольше - ясен пень. Но не время.

Спустя 8 минут, 12 секунд (14.07.2011 - 14:41) tatti написал(а):
twin
всё вроде логично. однако интересный приём самому приводить свои же выдержки со своего-же ресурса rolleyes.gif а хотелось бы по факту.

Цитата (twin @ 14.07.2011 - 11:33)
Я не поленился измерить на трех своих хостингах. Совершенно никакой разницы.

вот и я о том же

в Zend PHP5 Certification Study Guide Second Edition от Davey Shafik and Ben Ramsey (цитирую)
Цитата
interpreter insensitive to whitespaces
тоесть, пробелы не вычищаются. они просто интерпретатору не интересны. каретка по ним пробегает и всё. они есть в файле - да. файл из-за них больше весит - да. но утверждать, что они незначительно влияют на скорость выполнения скрипта - смешно smile.gif зависит то от скрипта и от исполнителя. два прогера напишут одно и то же задание, каждый по своему и нельзя утверждать, что у того у кого больше пробелов в коде, тот и медленее будет. так что inpot, не вселяйте в людей пустые надежды.

Спустя 15 минут, 29 секунд (14.07.2011 - 14:57) twin написал(а):
Цитата
файл из-за них больше весит - да. но утверждать, что они незначительно влияют на скорость выполнения скрипта - смешно
Ну о чем я и написал.
Цитата
Но это такой мизер, что совершенно не стоит внимания.

Однако истины ради нужно признать, что с пробелами код выполняется медленнее. Даже хотябы потому, что каретке требуется время на прохождение порбела (если по твоей логике). Ну и из-за веса файла. Так что столь категорично:
Цитата
чушь. пхп интерпретатору пробелы до фени
я бы поостерегся выражаться. Но и принимать во внимание эту разницу по времени - смешно. smile.gif

Цитата
однако интересный приём самому приводить свои же выдержки со своего-же ресурса
ну это кагбэ скрытая реклама wink.gif

Спустя 12 минут, 26 секунд (14.07.2011 - 15:09) Гость_YVSIK написал(а):
твина полностью поддерживаю всё аргументировано
но в уме всегда вот что думаю ))

а это чистый яндекс и всего
его первая страница ==> код вырезка
ведь для чего-то это сделано

Свернутый текст
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><title>Яндекс</title><link rel="shortcut icon"href="http://yandex.st/lego/_/pDu9OWAQKB0s2J9IojKpiS_Eho.ico"><link rel=alternate type="application/rss+xml"title="Новости Яндекса"href="http://company.yandex.ru/news/news.rss"><link rel=alternate type="application/rss+xml"title="Блог Яндекса"href="http://company.yandex.ru/blog/index.rss"><link rel=search href="http://yandex.ru/opensearch.xml"title="Яндекс"type="application/opensearchdescription+xml"><meta name="yamm"content="w"><script type="text/javascript">document.documentElement.id = "js"; if (document.compatMode != "CSS1Compat") document.documentElement.className += " quirks"; var addEvent = function(obj, type, func, capture) { if (!obj) { return; } if (obj.addEventListener) { obj.addEventListener(type, func, capture); } else if (obj.attachEvent) { obj.attachEvent("on" + type, func); } }; var focusHandler = function(e){ var target = e.target || e.srcElement; if (!target){ return; } if (!target.tagName || target.tagName && !(target.tagName.toLowerCase() == 'input' || target.tagName.toLowerCase() == 'textarea')){ return; } if (target.id && target.id.toLowerCase() == 'text'){ window.isFocusStealed = 0; } else{ window.isFocusStealed = 1; } }; addEvent(window, 'focus', focusHandler, true); addEvent(document, 'focusin', focusHandler, true); addEvent(document, 'DOMFocusIn', focusHandler, true); var keyEventsHandler= function(e){ var target = e.target || e.srcElement; if (!target || !target.tagName){ window.isFocusStealed = 1; return; } if (!(target.tagName.toLowerCase() == 'input' || target.tagName.toLowerCase() == 'textarea')){ return; } if (target.id && target.id.toLowerCase() == "text"){ window.isFocusStealed = 0; return; } var keyCode = e.keyCode || e.which; var char = String.fromCharCode(keyCode); var re = /[a-zA-Z0-9]/; if (char.match(re)){ window.isFocusStealed = 1; } }; addEvent(document, 'keyup', keyEventsHandler); addEvent(document, 'keydown', keyEventsHandler); addEvent(document, 'keypress', keyEventsHandler);</script><style type="text/css">
.b-news__title{padding-bottom:5px;float:left}.b-news__title a:visited{color:#000}.b-news__tabs{float:left;overflow:hidden;height:20px;margin:-3px 0 4px -3px}.b-news__tabs li{position:relative;float:left;padding:0 4px}.b-news__tabs li a{position:relative;float:left;outline:none}.b-news__tabs .all a{font-weight:bold}.b-news-tabs__selected:before{position:absolute;z-index:10;top:2px;left:0;display:block;width:4px;height:17px;content:" ";border-right:1px solid rgba(0,0,0,0.2);border-bottom:1px solid rgba(0,0,0,0.2);border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-rad ius:4px;-o-border-radius:0 0 4px 0;border-radius:0 0 4px 0}.b-news-tabs__selected:after{position:absolute;z-index:10;top:2px;right:0;display:block;width:4px;height:17px;content:" ";border-left:1px solid rgba(0,0,0,0.2);border-bottom:1px solid rgba(0,0,0,0.2);border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius :4px;-o-border-radius:0 0 0 4px;border-radius:0 0 0 4px}.b-news-tabs__selected a{height:14px;padding:0 10px;text-decoration:none;line-height:20px;color:#000;border-top:1px solid rgba(0,0,0,0.38);border-left:1px solid transparent;border-right:1px solid transparent;-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;-moz-border-radius-topr ight:3px;-webkit-border-top-right-radius:3px;-o-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;border-bottom:none;background:linear-gradient(top,rgba(0,0,0,0.25) 0,rgba(0,0,0,0.05) 21%,rgba(0,0,0,0) 28%);background:-moz-linear-gradient(top,rgba(0,0,0,0.25) 0,rgba(0,0,0,0.05) 21%,rgba(0,0,0,0) 28%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,rgba(0,0,0,0.25)),color-stop(0.21,rgba(0,0,0,0.05)),color-stop(0.28,rgba(0,0,0,0)));background:-o-linear-gradient(top,rgba(0,0,0,0.25) 0,rgba(0,0,0,0.05) 21%,rgba(0,0,0,0) 28%)}.b-news-tabs__selected a .b-news-tabs__text{text-decoration:underline}.b-news-tabs__selected a:before,.b-news-tabs__selected a:after{position:absolute;top:0;display:block;height:12px;width:2px;content:" ";border:0}.b-news-tabs__selected a:before{left:0;-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;-o-border-radius:5px 0 0 0;border-radius:5px 0 0 0;background:linear-gradient(left,rgba(0,0,0,0.15) 0,rgba(0,0,0,0) 100%);background:-moz-linear-gradient(left,rgba(0,0,0,0.15) 0,rgba(0,0,0,0) 100%);background:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,0.15)),to(rgba(0,0,0,0)));background:-o-linear-gradient(left,rgba(0,0,0,0.15) 0,rgba(0,0,0,0) 100%)}.b-news-tabs__selected a:after{right:0;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;-o-border-radius:0 5px 0 0;border-radius:0 5px 0 0;background:linear-gradient(right,rgba(0,0,0,0.15) 0,rgba(0,0,0,0) 100%);background:-moz-linear-gradient(right,rgba(0,0,0,0.15) 0,rgba(0,0,0,0) 100%);background:-webkit-gradient(linear,right top,left top,from(rgba(0,0,0,0.15)),to(rgba(0,0,0,0)));background:-o-linear-gradient(right,rgba(0,0,0,0.15) 0,rgba(0,0,0,0) 100%)}.b-news-tabs__selected a i{position:absolute;bottom:-3px;left:0;display:block;width:100%;height:5px}.b-news-tabs__selected a i:before,.b-news-tabs__selected a

Спустя 28 минут, 27 секунд (14.07.2011 - 15:38) sebastjan написал(а):
twin
Спасибо, полезно и наглядно.
tatti Не спасибо, так как не полезно и не наглядно smile.gif



Спустя 9 минут, 19 секунд (14.07.2011 - 15:47) VolDroN написал(а):
Цитата
Ага, только вопрос: "Ну нахрена?"
удалить все пробелы, отступы, табуляцию, комментарии.
Работать быстре будет.

Спустя 6 минут, 3 секунды (14.07.2011 - 15:53) twin написал(а):
Гость_YVSIK
Не путай PHP и HTML. Отсутствие пробелов в последнем довольно существенно экономит трафик. А мы говорим о скорости исполнения скрипта сервером.

Спустя 8 минут, 20 секунд (14.07.2011 - 16:01) Гость_YVSIK написал(а):
Принимается полностью ))
аргумент cool.gif
Теперь все на своих местах )) Как всегда !!
user posted image

Спустя 3 часа, 49 минут, 25 секунд (14.07.2011 - 19:51) inpost написал(а):
twin
Я тему поднимал, помнишь давно ещё, тестировал как раз на нашем ирбисовском хостинге для временных сайтов, везде такой же результат, при этом если запускать на локальном сервере - то это выглядет абсурдно, что из-за пробелов тормозит.
Вот сейчас на знакомствах запустил, можешь сам глянуть, test4.php , вот его работа: http://my.jetscreenshot.com/demo/20110714-1jyt-21kb , видно, что именно echo с пробелами работает очень медленно. При этом самый быстрый результат именно:
<?php echo $var1; ?>, <?php echo $var2; ?>, <?php echo $var3; ?>, <?php echo $var4; ?>

Спустя 49 минут, 50 секунд (14.07.2011 - 20:41) Winston написал(а):
Давайте тогда так писать :D
echo $var, 'text', $var2

Будет выигрыш в скорости ?
holywar == true ?

Спустя 2 часа, 10 минут, 54 секунды (14.07.2011 - 22:52) inpost написал(а):
PHPprogramer
Я ещё в первом сообщении рассказал человеку о разнице, но сказал, что неважно как писать, лишь бы было удобно.
Если и париться над скоростью, то только при помощи специальных скриптов, о которых тоже ранее написал, а ещё написал, что разница будет такая мизерная, что без разницы как писать. Так что никто не холиварит smile.gif

Спустя 10 часов, 48 минут, 40 секунд (15.07.2011 - 09:40) tatti написал(а):
inpost
не надо мешать одно с другим. причем тут echo вообще? разговор про неэкранированые пробелы в скрипте

Спустя 3 часа, 8 минут, 26 секунд (15.07.2011 - 12:49) inpost написал(а):
tatti
Всё в тему, пробел замедляет работу, при некоторых серверах - пробелы очень сильно сказываются на работе, увеличивая в 2 раза где-то. Вопрос о пробелах, о них и идёт речь, читай внимательнее топик.

Спустя 21 час, 13 минут, 33 секунды (16.07.2011 - 10:02) tatti написал(а):
inpost
как эе в тему когда речь идёт о пробелах в пхп а не о пробелах генерируемых в пхп для вывода на экран или для тебя это одно и тоже? rolleyes.gif
дальнейший спор считаю бессмысленным. попроси кого нибудь из своих обьяснить тебе разницу.

Спустя 42 минуты, 38 секунд (16.07.2011 - 10:45) twin написал(а):
Малчики-девочки, не ссорьтесь. Правы оба наверное, ведь не из пальца все это, просто нужно учитывать особенности текущего момента.
Ну и уж точно не нужно пренебрегать читабельностью в пользу пары микросекунд. ИМХО.

inpost
Если не трудно, проведи еще пару тестов и покажи результ. Мало ли... Ведь, как говоится, только пукнуть хотел. Никому верить нельзя.

Спустя 1 час, 52 минуты, 48 секунд (16.07.2011 - 12:38) inpost написал(а):
tatti
Как я знаю, пробелы в любом случае сначала вырезаются вне зависимости от их расположения, а потом уже идёт обработка, так какая нафиг разница, где стоит пробел, если прогоняется через функцию наподобии str_replace(' ','',script); ?

Спустя 1 час, 39 минут, 54 секунды (16.07.2011 - 14:18) neadekvat написал(а):
Цитата (inpost @ 16.07.2011 - 13:38)
если прогоняется через функцию наподобии str_replace(' ','',script); ?

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

Вообще, честно, странный холивар - ни о чем.
Все равно надо ставить пробелы и отсутпы. В Питоне, например, это вообще основополагающее явление.

Спустя 1 час, 8 минут, 4 секунды (16.07.2011 - 15:26) twin написал(а):
neadekvat
Цитата
Вообще, честно, странный холивар - ни о чем.
А поговорить?

Спустя 1 минута, 28 секунд (16.07.2011 - 15:27) neadekvat написал(а):
Цитата (twin @ 16.07.2011 - 16:26)
А поговорить?

Порой лучше обсудить погоду =\

Спустя 4 часа, 20 минут, 25 секунд (16.07.2011 - 19:48) tatti написал(а):
Цитата (inpost @ 16.07.2011 - 09:38)
tatti
Как я знаю, пробелы в любом случае сначала вырезаются вне зависимости от их расположения, а потом уже идёт обработка, так какая нафиг разница, где стоит пробел, если прогоняется через функцию наподобии str_replace(' ','',script); ?
это ты, как эксперт, сейчас сказал или *я люблю твороженные булочки*


_____________
печатаю со скоростью 320 минут в знак...

плюсуем карму не стесняемся
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.