Эта статья постарается научить вас нескольким лучшим практикам одного из самых популярных языков программирования в мире. Проблема в том, что многие разработчики, не только начинающие, но даже опытные PHP программисты, не уделяют им должного внимания.
Не так редки случаи, когда люди теряли высокооплачиваемую работу только потому, что не заостряли свое внимание на особенностях языка. Помните, что довольно сложно разобраться во всем за одну ночь.
Итак, если вы хотите стать профессиональным разработчиком, вы должны понимать особенности языка и использовать их в каждой новой написанной строчке кода.
1. Комментируйте свой код
Комментирование намного важнее, чем вы могли подумать. Очень грустно видеть начинающих разработчиков, да и закалённых программеров, которые не комментируют свой код просто потому что им лень.
Комментарии не только позволяют другим разработчикам понять ваш код, но и помогут разобраться вам самим, если придется вернуться к нему спустя какое-то время. Допустим, сегодня вы написали критически-важную функцию, и вы помните как она работает спустя день, два или даже неделю. Но, скорее всего, вы забудете о ней через пару месяцев.
Комментирование сделает ваш код понятным каждому (даже самим себе).
2. Используйте стандарты оформления кода
Стандартов оформления кода необходимость придерживаться (см. PSR-2, прим. пер.). Если разработчики в одном проекте будут использовать разные стандарты, репозиторий может превратиться в сущий ад.
Исходный код может стать абсолютно не поддерживаемым, если каждый, работая над ним, будет изобретать свой собственный стандарт оформления. Есть даже разработчики, которые не потрудились придерживаться хоть какого-нибудь стандарта, их код начал выглядеть как большая куча мусора и не более того.
Строгое следование определенному стандарту в оформлении кода даёт возможность другим программистам провести отладку вашего кода, и позволит вам самим присоединиться к сторонним проектам.
3. Никогда не используйте короткие теги
Есть много программистов, которые, я не знаю почему, пытаются придерживаться кротчайшего пути в объявлении PHP кода. Использование "<?" или "<%" никогда не было хорошим вариантом, а также не заставит выглядеть ваш код более профессионально.
Я действительно не понимаю, почему люди часто опускают несколько символов в объявлении PHP. Как много времени это может сэкономить? Назовите мне хотя бы одну причину по которой вы должны использовать короткую запись вместо тега "<?php".
Это простое злоупотребление может стать причиной конфликтов с xml парсерами, а также может сделать ваш код несовместимым с будущими версиями PHP.
4. Используйте осмысленные названия переменных и функций
Если вы не применяете стандарты присвоения имен переменных, а используете общие и ничего не значащие имена, это может стать болезненным опытом для программистов, разбирающихся в вашем коде. Это очень плохая тенденция, которой ни в коем случае не стоит придерживаться.
Всегда пытайтесь использовать значимые и грамматически верные имена, а также заведите себе хорошую привычку разделять слова нижним подчеркиванием (автор имеет в виду Snake_case, что довольно странно, т.к. в PSR-2 используется CamelCase, прим. пер.). И, конечно, соответствуйте выбранному стандарту, чтобы другие люди смогли быстро и просто понять ваши обозначения.
5. Отступы и длина строк
Я уже говорил о важности следования стандарту оформления кода, но отдельно стоит сказать про отступы и длину строк.
Всегда используйте 4 пробела. Никогда не используйте Tab, потому что на разных компьютерах он может отображаться по-разному. Также старайтесь не выходить за пределы 80-и символов в длине строки, это сделает ваш код более читаемым.
Главная идея здесь - ваш код должен быть чистым, легко читаемым и отлаживаемым вами или другими программистами.
6. Одинарные или двойные кавычки
Вы должны понимать разницу между одинарными и двойными кавычками. Если вам нужно просто вывести на экран строку - используйте одинарные кавычки.
Но если вам нужно использовать переменные или спец символы ("n", "t"), воспользуйтесь двойными кавычками. Это заставит PHP интерпретатор искать в строке управляющие последовательности, помните только, что это может занять больше процессорного времени.
Запомните разницу в их работе и используйте должным образом.
7. Никогда не используйте функции внутри циклов
Я видел множество программистов, которые допускают эту ошибку. Если вы делаете это намеренно и готовы пожертвовать производительностью ради сокращения кода на пару строк, предлагаю еще раз подумать об этом.
Так делать плохо:
for ($ = 0; $i <= count($array); $i++) { // Действия }
Так делать хорошо:
$count = count($array); for ($i = 0; $i < $count; $i++) { // Действия }
Если вы возьмете на себя бремя хранения значения функции в отдельной переменной до цикла, вы сможете сэкономить довольно много времени выполнения. Во втором случае функция выполняется всего раз, а в первом - каждый раз при прохождении цикла. В программах с большими циклами это может быть очень существенно.
8. Используйте одинарные кавычки в индексах массивов
Есть разница между $array['quotes'] и $array[quotes], и вы должны понять её.
Особенность PHP в том, что он воспринимает индексы без кавычек как константы, и, если эти константы не были объявлены ранее, они будут самоопределены (self-defined), что вызовет предупреждение (warning). Это не остановит выполнение кода, но ошибка есть ошибка.
9. Лучший способ вывода строк
Взгляните на кусок кода, представленный ниже, и попробуйте догадаться, какое выражение выполнится быстрее, а какое окажется медленнее.
Код:
$a = 'PHP'; print "This is my first $a program."; echo "This is my first $a program."; echo "This is my first " . $a . " program."; echo "This is my first ", $a, " program.";
Представьте, но последняя запись, та, которую реже всего можно встретить в коде, выигрывает в тестах производительности. Первая запись, очевидно, проигрывает, потому что функция "print" работает медленнее, чем "echo". Третья строка выигрывает у второй за счет того, что операция конкатенации обрабатывается быстрее, чем переменные внутри строки.
Малоизвестный четвертый вариант побеждает, потому что в нем нет операций работы со строками, а всего лишь список строк, разделенных запятыми.
10. Включайте вывод ошибок (Error Reporting) в процессе разработки
В PHP есть очень полезная функция, error_reporting(), которая может помочь найти различные проблемы в вашем приложении.
Довольно часто встречаются ошибки, которые не останавливают выполнение программы, но они - потенциальные баги, которые обитают в вашем коде. Вы, как профессиональный разработчик, должны стремиться писать программы, свободные от любых ошибок.
PHP поддерживает несколько уровней показа ошибок: E_NOTICE, E_WARNING, E_PARSEи тд., но вы должны использовать E_ALLдля вывода всех типов уведомлений. Не забудьте выключить показ ошибок, когда закончите работу над кодом, чтобы пользователи не испугались невразумительных сообщений.
11. Не забывайте о принципе DRY
DRY или Don't Repeat Yourself (не повторяйся) - это концепция проектирования программного обеспечения, которая позволяет избавиться от избыточности в своем коде.
Это концепция применима не только к PHP, но и к любому другому языку программирования, таким как Java, C++ и тд. Простой пример кода позволит вам понять принцип DRY.
$mysql = mysql_connect('localhost', 'admin', 'admin_pass'); mysql_select_db('wordpress') or die('Cannot Select Database');
После применения принципа DRY, код будет выглядеть так:
$db_host = 'localhost'; $db_user = 'admin'; $db_pass = 'admin_pass'; $db_name = 'wordpress'; $mysql = mysql_connect($db_host, $db_user, $db_pass); mysql_connect($db_name);
12. Избегайте излишнюю вложенность
Постарайтесь избежать вложенность в вашем коде, на сколько это возможно. Иначе отладка может стать действительно трудным занятием, а также доведет до белого каления человека, делающего review вашего кода.
Используйте условные операторы таким образом, чтобы избежать множественного вложения. Это не только очень плохая практика, но и выставит ваше код в неудобном свете перед другими разработчиками.
13. Никогда не кладите phpinfo() в корневую директорию
Если вам нужно узнать детальную информацию о сервере, phpinfo() - очень удобное средство. Вам нужно всего лишь создать PHP файл:
<?php phpinfo(); ?>
Вы всего лишь размещаете файл на вашем сервере и получаете исчерпывающую информацию. Но множество разработчиков допускают ошибку, помещая файл в корневую директорию, т.к. это может открыть множество лазеек для хакеров.
Лучшим вариантом будет удалить файл, как только вы закончите с ним. Не так уж и страшно потратить пару секунд, если он понадобится вам снова.
14. Сделайте документацию по PHP вашим лучшим другом
Одна из лучших черт PHP - хорошая документация. Просто перейдите на htttp://php.net, и вы получите исчерпывающую информацию, по любому вопросу, который может у вас возникнуть, в достойно оформленном виде.
У них есть новый дизайн (в бэта версии), если хотите. Другой полезной чертой документации PHP являются крайне полезные комментарии.
15. Время использовать IDE
IDE расшифровывается как Integrated Development Environment (интегрированная среда разработки). Она может существенно облегчить процесс разработки. IDE обладает такими крутыми штуками как: Подсветка синтаксиса, Автодополнение кода, Навигация, Отладка и др., что сделает вас намного продуктивнее и поможет вам писать хороший код с минимумом ошибок.
Вот несколько IDE для PHP: NetBeans, phpDesigner, phpStorm и т.д. Выбери то, что больше понравится.
16. Попробуйте PHP фреймворки
Если вы изучили основы PHP, значит самое время перейти к фреймворкам. Их для PHP целые десятки, большинство из них основано на модели MVC (Model-View-Controller).
Из них вы подчерпнете много новых интересных вещей для изучения. CakePHP, CodeIgniter, Zend, Symphony позволят вам создать потрясающие приложения на PHP.
17. Запускайте PHP локально
Если вы работаете над PHP приложением, то вам хотелось бы вести весь процесс разработки на своем компьютере, без подключения к удаленному серверу.
Для этого вам нужны лишь веб-сервер Apache и PHP. Если появится необходимость в базе данных, воспользуйтесь MySQL.
Конечно, вы можете установить их раздельно, но лучше будет воспользоваться готовым решением: XAMPP, WAMP, MAMP. Они очень просты в настройке и позволят развернуть локальный сервер за считанные минуты.
18. ООП
Концепция объектно-ориентированного программирования впервые была представлена в PHP 4, но полноценная его поддержка появилась в PHP 5.
Существует два типа языков программирования - процедурные и объектно-ориентированные. Первая написанная вами программа была, должно быть, процедурной.
Но сейчас самое время перейти к объектно-ориентированному программированию, поскольку оно обеспечивает более высокий уровень гибкости и может значительно сократить размер исходного кода. Ваш код станет выглядеть намного более организованным.
19. Обновляйте PHP
Это очевидный пункт, но множество программистов неохотно берутся за обновление. Вместе с новой версией мы можете получить улучшение производительности и новые возможности. Нет абсолютно ни единой причины, пропускать обновления.
Эти новые возможности могут сделать вашу программистскую жизнь намного интереснее и проще. И не стоит забывать, что в новых версиях появляются исправления багов и улучшения, связанные с безопасностью.
20. Взаимодействуйте с другими разработчиками
Один из простейших способов изучить что-то новое - чаще коммуницировать с другими людьми. Большинство людей неохотно признают, что они не очень-то сильны в той или иной сфере и нуждаются в помощи.
Но если вы будете думать также, то перекроете себе путь в мир изучения новых замечательных технологий.
Спрашивайте ваших друзей или опытных разработчиков на всевозможных форумах, таких как Stack Overflow, Dream In Code и т.п. В мире много людей, которые всегда готовы протянуть вам руку помощи.
От автора перевода:
Пост является переводом оригинальной статьи Aritra Roy ( https://www.corephp.com/blog/php-best-practices-that-you-must-follow/), опубликованной в августе 2013, но до сих пор сохранившей актуальность.