Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Правила хорошего кода 
:(
    Опции темы
CyClon
Дата 19.1.2006, 21:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 3.12.2005

Репутация: нет
Всего: 4



Где-то читал, что:
echo "My name is $name!";
Намного быстрее чем
echo "My name is".$name."!";
И быстрее чем:
echo "My name is {$name}!";


--------------------
user posted image
PM   Вверх
wsr
Дата 19.1.2006, 22:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Fuzzy Logic
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 3.7.2005

Репутация: нет
Всего: 2



Цитата(CyClon @ 19.1.2006, 21:33 Найти цитируемый пост)

Где-то читал, что:
echo "My name is $name!";
Намного быстрее чем
echo "My name is".$name."!";
И быстрее чем:
echo "My name is {$name}!";


Быстрее но не значит лучше!
В дальнейшем, при парсинге кода гораздо легче в большом блоке данных найти echo "My name is".$name."!"; чем echo "My name is $name!";
--------------------
 ICQ : 918-318Сайт : Lock-Team 
PM MAIL WWW ICQ   Вверх
Mal Hack
Дата 19.1.2006, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 8
Всего: 261



Самое быстрое и лучше - второй вариант, затем третий, затем первый.
PM ICQ   Вверх
Ciber SLasH
Дата 20.1.2006, 09:39 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1813
Регистрация: 9.11.2004
Где: С.-Петербург

Репутация: нет
Всего: 67



Я вот юзаю такой синтаксис:
1) если PHP-код идёт блоками с (X)HTML-кодом, то делаю так:
Код

<?
//-- BEGIN: php ----------------------------------------------------------------
$action = $_GET['action'];        // действие: index.php?action=buy — купить товар. И т.д. и т.п.
$act = explode(':', $action);    // действие: index.php?action=log:clear — очистить лог. И т.д. и т.п.
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
// Ниже как бы основной код, который выполняется всегда
$_title = 'Shop :: Main';
//-- END: php ------------------------------------------------------------------
?>
    <tr>
    <td id='navbar' style='display: none'>&nbsp;</td><!-- Для отображения — удалить атрибут "style" -->
    <td id='content'>
        <table id='priceList' align="center">
        <caption>Список товаров</caption>
        <thead>
            <tr><td colspan="2">Группа</td><td>Альбом</td><td>Год</td><td>Цена</td><td>ID</td></tr>
        </thead>
        <tbody>
<?
//-- BEGIN: php ----------------------------------------------------------------
// Другой PHP-блок
//-- END: php ------------------------------------------------------------------
?>

2) если есть какие-то структурированные массивы, то описываю их структуру в комментах:
Код

/* Пример массива:
    $order = array(
        // Смысл элементов: "Группа", "Альбом", "Год", "Цена", "ID"
        0 => array("Гражданская Оборона", "Вершки и корешки", "1989", "0.01 WMZ", "0"),
        1 => array("Гражданская Оборона", "Русское поле экспериментов", "1989", "0.01 WMZ", "1"),
        ...
    );
*/

3) отделяю некие псевдо-блоки кода, которые являются одной частью:
Код

$mrh_login = '';
$mrh_pass1 = '';

$inv_id = md5(uniqid(time()));    // номер счёта

4) комментарии начинаю с большой буквы, если они находятся в новой строке, иначе — с маленькой. Выравниваю комменты, если они находятся в ближайшей видимости:
Код

// Описание товара
$inv_desc = (count($order) == 1) ? $order[0][0] : 'Аудио-файлы (тестовый режим)';
$out_summ = 0;                    // сумма товара (инициализация)
$shp_id = '';                    // ID-товаров, строка вида: "ID0:ID1:ID2..."

5) отделяю пробелами символы операций (меньше, больше, присвоить значений и т.д.)
6) отделяю важные блоки так:
Код

//--[ Записываем инфу о заказе в файл ]-------------------------------------
$fp = fopen('./data/checks/'.$inv_id, 'wt');
flock($fp, LOCK_EX);
fwrite($fp, implode('|', $order_info));
flock($fp, LOCK_UN);
fclose($fp);
//-- END -------------------------------------------------------------------

// Иногда так, если не слишком много символов в заголовке
//--[ Отсылка письма ]----------------------------------------------------------
$e_mail = new Mail;
$e_mail->from = '';
$e_mail->to = $order_info[2];    // кому будем слать мессагу
$e_mail->subject = 'Shop :: Заказанные товары';
$e_mail->body = $e_content;    
for ($i = 0; $i < count($attach); $i++) {    // присоединяем файлы
    $e_mail->add_attachment('./data/'.$attach[$i]);
}
$e_mail->send();
//-- END: отсылка письма -------------------------------------------------------

7) описываю новые элементы с новой строки при определении массивов, но только если это логично для данных массива:
Код

$headers = array(
    'User-Agent: '.$_SERVER['HTTP_USER_AGENT'],
    'Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1',
    'Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3',
    'Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0',
    'Referer: http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'],    // полный URL этой страницы
    'Content-Type: application/x-www-form-urlencoded',
    'Content-Length: '.strlen($post_data),
    'Connection: keep-alive'
);

8) функции описываю так:
Код

function funcName($a, $b) {
$c = 'zzz';
    if ($c == 'a') {
        $d = 'yyy';
        return true;
    }
return false;
}

9) для отступов юзаю табы в размере 4 знакоместа
10) строки с использованием переменных разбиваю:
Код

echo 'zzz'.$a.'yyyyy';

11) там, где не нужна обработка escape-последовательностей, юзаю одинарные кавычки для строк, иначе — двойные:
Код

echo 'zzz'.$a.'yyyyy';
echo "zzzzzz:\t".$a;

12) пишу код, который не зависит от register_globals, чем [новички (не все); люди которые не беспокоятся о безопасности; ленивые (которым пофигу); возможно ещё есть кто-то, кого я не включил в этот список] зачастую пренебрегают... а жаль
13) пишу в EditPlus, хотя как-нить обязательно прикуплю диск (конечно не лицензионный, денег таких нет, чтобы разбрасываться ими на такое добро) с Zend-ом

ЗЫ: кстати описывание комментариев по PEAR стандартам отличается в русской и английской доке:
ru: http://pear.php.net/manual/ru/standards.header.php
en: http://pear.php.net/manual/en/standards.header.php
Мне больше нравится так, как в английской доке smile

Это сообщение отредактировал(а) Ciber SLasH - 20.1.2006, 09:50
PM   Вверх
AztEK
Дата 20.1.2006, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 723
Регистрация: 4.1.2005

Репутация: нет
Всего: 18



Читал, что лучше использовать одинарные кавычки+конканетация переменных.


--------------------
Linux is like wigwam -- no windows, no gates, apache inside.
PM MAIL Jabber   Вверх
Janus
Дата 20.1.2006, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 186
Регистрация: 26.9.2005

Репутация: нет
Всего: 1



Так и есть. В этом случае не тратится лишнее время на разбор строки.
--------------------
Проект "Репликатор" 
PM MAIL   Вверх
DENNN
Дата 20.1.2006, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

Репутация: нет
Всего: 43



Цитата(AztEK @ 20.1.2006, 12:55 Найти цитируемый пост)

Читал, что лучше использовать одинарные кавычки+конканетация переменных.

Видимо из тех соображений, что парсер не тратит время, выискивая переменные в двойных кавычках.

Это сообщение отредактировал(а) DENNN - 20.1.2006, 13:07
PM ICQ   Вверх
Древлянин
Дата 22.1.2006, 01:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 20.1.2006

Репутация: нет
Всего: нет



Цитата(Janus @ 20.1.2006, 13:00 Найти цитируемый пост)

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

Да, так было до 5-ой версии PHP, в 5-ой теперь обрабатывается одинаково быстро.
PM MAIL   Вверх
Ciber SLasH
Дата 22.1.2006, 01:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1813
Регистрация: 9.11.2004
Где: С.-Петербург

Репутация: нет
Всего: 67



Цитата(Древлянин @ 22.1.2006, 01:37 Найти цитируемый пост)

так было до 5-ой версии PHP

5-я версия, это конечно хорошо, но к великому сожалению большинство хостингов сидят на 4-ёрке. smile
PM   Вверх
wsr
Дата 23.1.2006, 01:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Fuzzy Logic
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 3.7.2005

Репутация: нет
Всего: 2



Помоему сейчас тема с кавычками не особо актуальна, так как рано или поздно, но все равно все перейдут на PHP 5.
А там как известно "все" одинаково. ИМХО.
--------------------
 ICQ : 918-318Сайт : Lock-Team 
PM MAIL WWW ICQ   Вверх
idler
Дата 28.2.2006, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 27.2.2006

Репутация: нет
Всего: 1



Правила написания PEAR рулят однозначно!!!
Код получается красивый, понятный, быстрый и самодокументирующийся (PEAR::phpDocumentor)
PM MAIL   Вверх
CyClon
Дата 1.3.2006, 21:05 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 3.12.2005

Репутация: нет
Всего: 4



Мне PEAR не нравятся... Больше нравится такой стиль:

Код
if (eregi("mail.ru", $_POST['mail'])) {
    echo "Sorry...";
} else {
    header("Location: reg.php");
}


Код
function bb2html ($text) {
    str_replace("[b]", "<b>");
    str_replace("[/b]", "</b>");
}



--------------------
user posted image
PM   Вверх
-=Ustas=-
Дата 1.3.2006, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: нет
Всего: 69



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


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
Ciber SLasH
Дата 1.3.2006, 23:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1813
Регистрация: 9.11.2004
Где: С.-Петербург

Репутация: нет
Всего: 67



Цитата(-=Ustas=- @ 1.3.2006, 21:10 Найти цитируемый пост)
лучше всего привыкать к общим используемым стандартам, нежели писать так как тебе нравится smile

Не совсем согласен. У каждого прогера свой стиль программирования. Люди все разные... клоны пока не получили широкого распространения smile
PM   Вверх
Wowa
Дата 1.3.2006, 23:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: нет
Всего: 290




Цитата(CyClon @ 1.3.2006, 19:05 Найти цитируемый пост)

if (eregi("mail.ru", $_POST['mail'])) {
    echo "Sorry...";
} else {
    header("Location: reg.php");
}


Я тоже в таком стиле люблю писать. Занимает мало места и для меня - очень наглядно smile
PM WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса

Внимание: данный раздел предназначен для решения сложных, нестандартных задач.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Для профи | Следующая тема »


 




[ Время генерации скрипта: 0.1139 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.