Всякий кто сталкивается c
PHP, в скором времени приходит к выводу, что это не совсем удобный язык для
изучения. Дело в том, что он достаточно новый и динамично развивающийся, каждая
последующая версия буквально перечёркивает предыдущую. В таких условиях
имеющаяся документация быстро устаревает, а специалисты предпочитают не писать
книг, так как информация размещённая в книге начинает устаревать до выхода книги
в свет.
Почему же PHP так
популярен и каким образом столько человек разом обучилось PHP? Дело в том, что
большинство PHP-программистов не изучало язык с нуля, а изучало его либо уже
зная С/С++, либо Perl. Perl является C-подобным языком программирования (как и
PHP), а является предшественником PHP, можно сказать что PHP это
Web-ориентированный Perl. Поскольку, PHP просто логически следует из Perl и
широкое распространение получил именно из-за того, что программистам было легко
переходить с Perl на PHP (ну и с С на PHP, тоже).
Замечание
Язык Perl появился в 1986
году по воле системного программиста Лари Уолла. Созданный первоначально как
средство обработки текстовых файлов, призванное облегчить жизнь системному
администратору UNIX, он превратился в настоящий язык программирования.
Традиционные области, в которых Perl применяется особенно часто и успешно, —
создание приложений CGI, системное администрирование UNIX, обработка
текста.
Кроме того, свой вклад
вносит предметная область — программирование для сети Интернет. Для серьёзного
понимания которого желательно знание очень многих вещей (HTML, SQL, UNIX,
прикладных протоколов — хотя бы HTTP, стилей программирования на С, Perl,
Java).
Когда большинство PHP-программистов переходят в мир PHP с багажом
другого языка программирования (их стиль уже устоялся), спрос на литературу, в
которой бы обсуждались азы программирования не так велик. Новичкам бывает трудно
найти информацию об организации кода. Мы надеемся, что эта статья поможет
поставить свой собственный стиль, что в конечном итоге может увеличить скорость
разработки на 30% и помочь при работе в команде, когда ваш код будет читаться
другими программистами, а вам соответственно придётся читать чужой
код.
Расстановка фигурных скобок и
отступы
Существует несколько
стилей расстановки фигурных скобок, все они диктуются существующими стилями в
других C-подобных языках программирования.
1) Рациональный стиль
Это один из наиболее
распространенных стилей, так как им пользовались Керниген (Kernighan) и Ричи
(Ritchie), авторы языка C.
<?php
if($flag){
echo "Hello world!";
}
?>
Преимущество этого
подхода заключается в экономии вертикального пространства, жизненно важного при
отладке большого блока кода. Оборотной стороной такого подхода является то, что
может оказаться трудным найти символ {, спрятанный в конце строки. Этого стиля
придерживаются и Java-программисты, как-то приписывает Sun.
2) Стиль Алмена
Эрик Алемен (Eric Allman)
написал утилиты BSD в этом стиле, поэтому этот стиль часто называют "стиль
BSD":
<?php
if($flag)
{
echo "Hello
world!";
}
?>
Аргументом в поддержку
такого стиля является тот факт, что область видимости блочного оператора ясна и
визуально ассоциируется с управляющим оператором.
3) Стиль Whitesmith
Данный стиль предписывает
использование следующей расстановки фигурных скобок
<?php
if($flag)
{
echo "Hello
world!";
}
?>
Этот стиль имеет
преимущество в том, что скобки более тесно ассоциируются с кодом, который они
включают и разграничивают, однако при визуальном просмотре текста отыскать
скобки оказывается чуть более сложно.
4) Стиль GNU
Программисты GNU фонда
Free Software Foundation используют следующий стиль расстановки фигурных
скобок
<?php
if($flag)
{
echo "Hello world!";
}
?>
Внутри любых управляющих
конструкций операторы следует располагать с отступом на одинаковое число
пробелов, например для операторов if-then-else код должен выглядеть следующим
образом:
<?php
$flag = true;
if($flag)
{
echo
"Переменная равна true";
exit();
}
else
{
echo
"Переменная равна false";
exit();
}
?>
Число может быть любым,
обычно используют 2, 4 или 8 пробелов. Старайтесь придерживаться этого правила,
некоторые программисты приходят в бешенство когда это число не кратно 2 :)
Наиболее оптимальным является использование 2 пробелов, так как при их большем
числе вложенные блоки становятся "растянутыми" и их становится сложно
воспринимать.
Пробелы вокруг символов
Бинарные операторы
следует обрамлять пробелами:
<?php
//
Неправильно
$a=$b+$c*$d;
// Правильно
$a = $b + $c *
$d;
?>
Символ пробела
ассоциируется с новым словом, поэтому формула читается не как непонятный набор
символов, а как нечто осмысленное.
Комментарии
Расставляйте комментарии
по принципу “чем больше, тем лучше” — пройдёт некоторое время и вы забудете, что
делал тот или иной программный блок. Вообще принято комментировать код на
английском языке или не комментировать вообще, так как в русском дикое
количество кодировок, да и вообще так исторически сложилось. Плюйте на это, код
вы комментируете в первую очередь для себя, а не для других! А раз уж вы делает
это для себя делайте это в удобной для вас кодировке.
PHP собрал в себе
практически все комментарии современных языков программирования, наряду с
однострочными комментариями в стиле shell-скриптов (#)
<?php
# Программный
модуль index.php
echo "Hello world!";
?>
и С++ (//)
<?php
//
Программный модуль index.php
echo "Hello
world!";
?>
можно использовать
многострочный комментарий в стиле C:
<?php
/* Это
многострочный комментарий в стиле С
он
охватывает несколько строк – не допускается
вложенных комментариев
*/
echo "Hello world!";
?>
К хорошему тону относится
использование однострочных комментариев для короткого комментария, а
многострочного — для комментария, охватывающего несколько строк. Не возбраняется
использовать однострочные комментарии для большого текста, особенно в начале
файла или важного блока кода
<?php
////////////////////////////////////////////////////////////////////////////////////////
// Гостевая книга
///////////////////////////////////////////////////////////////////////////////////////
?>
Как и при работе с
отступами и фигурными скобками, основным требованием является необходимость
придерживаться одного стиля во всех программных блоках.
При расстановке
однострочных комментариев возможно два варианта: непосредственно перед
выполняемым оператором
<?php
// Вывод
текстовой строки в окно браузера
echo "Hello
world!";
?>
и после точки с
запятой
<?php
echo "Hello world!"; // Вывод текстовой строки в окно браузера
?>
Лучше придерживаться
первого правила, так как строка получается длинной и плохо воспринимается
читающим. Единственным оправданием использования такого комментария является
комментирование закрывающейся скобки длинного программного блока, содержащего
много вложенных блоков.
<?php
if($tot)
{
while($position =
next($tot))
{
/* Очень длинный код
содержащий
много
вложенных
блоков
...
*/
if($flag)
{
echo
"Ошибка";
exit();
}
} // Конец while($position = next($tot))
}
?>
Имена переменных и функций
Существует несколько
стилей названия переменных
$var_bell — стиль C:
нижний регистр, знак подчёркивания.
$VarBell — стиль Pascal:
каждая подстрока в названии начинается с большой буквы.
$varBell — стиль Java:
первая строка начинается с маленькой буквы, все последующие с большой.
Не имеет значения, какой
стиль будет вами выбран — главное придерживаться в коде одного
стиля.
Замечание
В программировании
константы традиционно записываются в верхнем регистре YANDEX_BOT. Если вы
хотите, чтобы другие программисты могли легко воспринимать ваш код,
придерживайтесь этого правила.
При названии переменных и
функций старайтесь давать им осмысленные имена. Иногда ничего не приходит в
голову, и появляется назвать переменную как попало — остерегайтесь этого. В своё
время было потрачено не мало часов из-за неудачно названных переменных, иногда
отладить код удавалось лишь в том случае, если переменные были переименованы
подобающим образом.
Рассмотрим несколько
примеров. Часто временные строки для хранения SQL называют $query (запрос) — это
очень удачное название, ассоциирующееся именно с SQL-запросом. Обычно на этом
всё и заканчивается. При появлении второго запроса, вторая переменная получает
имя $query1 — это порочная практика. Обычно запросы в рамках одного скрипта
отличаются своим действием: один SQL-запрос может выполнять обновление (UPDATE),
другой выборку (SELECT), поэтому переменные лучше называть с указанием действия
оператора: $query_update и $query_select, соответственно.
Часто можно увидеть
код
<?php
$query = "SELECT * FROM catalog";
$query1 =
mysql_query($query);
while($result = mysql_fetch_array($query1))
{
/* Код обработки */
}
?>
Здесь дескриптор запроса,
возвращаемый функцией mysql_query() назван $query1, это здорово запутывает как
разработчика, так и читающего текст программы. Дескриптор не несёт физического
смысла — это лишь ключ к результату, поэтому его лучше называть сокращённым
именем таблицы
<?php
$query = "SELECT * FROM catalog";
$cat =
mysql_query($query);
while($catalog = mysql_fetch_array($cat))
{
/* Код обработки */
}
?>