В статье рассказывается:
- Восемь общих правил
- Правила кода PHP
- Комментарии в коде
- Чек-лист «Инспекция кода»
- Заключение
-
Пройди тест и узнай, какая сфера тебе подходит:
айти, дизайн или маркетинг.Бесплатно от Geekbrains
Следование единым правилам упрощает работу программистов. Оформление кода PHP по одному стандарту помогает в командной работе и повышает уровень разработки. Понятие «качественный код» появилось не случайно, так же, как и анекдоты о неспособности спустя время прочитать даже собственный код. Понятный структурированный код сокращает время чтения, позволяет сразу приступить к поиску проблемы.
Восемь общих правил
- Придумывайте понятные и читаемые названия. Избегайте русских слов в латинской транскрипции. Только английские слова, обозначающие суть.
- Делайте отступы на каждом уровне и отделяйте логические блоки пустой строкой.
- Сокращайте вложенность кода и убирайте дублирование.
- Контролируйте длину. Рекомендуем для функций не более 20 строк, для метода не более 50 строк, для класса не более 300 строк, для файла — не более 1000 строк. Также ограничивайте длину одной строки до видимого значения на экране. Мягкое ограничение составляет 120 символов.
- Комментируйте и документируйте код. Это позволит зафиксировать всю необходимую информацию.
- Используйте рефакторинг. Следуйте принципу «рефакторинг — раньше и рефакторинг — чаще». Советуем также прочитать книгу «Рефакторинг. Улучшение проекта существующего кода» Мартина Фаулера.
- Работайте в системе контроля версий, например, Git. Это бесплатно и удобно. Обучиться работать в ней можно за 11 занятий на видеокурсе «Git. Быстрый старт».
- Изучайте Open Source код. Вы сможете увидеть, как пишут ведущие разработчики и воспользоваться лучшими практиками в программировании.
Правила кода PHP
На конец 2017 г. действуют стандарты PHP программирования: PSR-2 и PSR-1. Они устанавливают правила синтаксиса, именования, оформления. Весь код должен быть написан единообразно. Это касается пробелов, отступов, скобок, строк.
входят в ТОП-30 с доходом
от 210 000 ₽/мес
Скачивайте и используйте уже сегодня:
Топ-30 самых востребованных и высокооплачиваемых профессий 2023
Поможет разобраться в актуальной ситуации на рынке труда
Подборка 50+ бесплатных нейросетей для упрощения работы и увеличения заработка
Только проверенные нейросети с доступом из России и свободным использованием
ТОП-100 площадок для поиска работы от GeekBrains
Список проверенных ресурсов реальных вакансий с доходом от 210 000 ₽
Чтобы не запоминать все требования стандартов, можно работать в современной среде разработки — PhpStorm, NetBeans и подобных. Они позволяют автоматически форматировать текст в соответствии с правилами.
Отступы
Запомните: один отступ = четыре пробела.
Выделяем отступами тело конструкции, тело метода, блоки импорта, аргументы и подобное.
Правильно
<?php switch ($expr) { case 1: echo `One`; break; case 2: echo `Two`; break; } ?>
Неправильно
<?php switch($expr) { case1: echo `One`; break; case 2: echo `Two`; break; } ?>Скачать файл
Пробелы
Ставятся:
- между for ( foreach/ while / catch) и (
- после ;
- между ) и {
- перед =>
- после =>
- между try и {
- между } и catch
Не ставятся:
- После имени метода.
- В списке аргументов перед запятыми.
- Между ( и именем функции или метода.
Пустая строка
Вставляется:
- После каждого логического блока.
- После определения пространства имен.
- После блока импорта. Каждая строка блока должна начинаться с use.
Правильно
<?php namespace Vendor\Package; use FooClass; use BarClass as Bar; use OtherVendor\OtherPackage\BazClass; // … ?>
Неправильно
<?php namespace Vendor\Package; use FooClass; use BarClass as Bar; use OtherVendor\OtherPackage\BazClass; // … ?>
Круглые скобки
- Не выносим на отдельные строки.
- Не ставим пробелы внутри: после ( и перед ).
- Ставим пробелы до скобок и после.
- Внутри перечисление отделяем пробелами.
Фигурные скобки
- Открывающая фигурная скобка выносится на новую строку перед телом метода, для классов.
- Открывающая фигурная скобка не выносится на отдельную строку в конструкциях и замыканиях.
- Закрывающая скобка } в конструкциях, имени метода, определении метода, классах пишется с новой строки и отделяется одним отступом.
Аргументы
Оформляются двумя способами: в одну строку через запятую или в столбик. Аргументы на одной строке пишутся через запятую внутри круглых скобок. Пробел ставится только после запятой.
Правильно
<?php Foo: :bar($arg1, $arg2, $arg3); ?>
Неправильно
<?php Foo: :bar($arg1 , $arg2,$arg3); ?>
на курсы от GeekBrains до 29 декабря
При оформлении в столбик каждый аргумент пишется с новой строки и отделяется двойным отступом. Первая круглая скобка остается на строке вместе обозначением метода. Вторая круглая скобка выносится в отдельную строку вместе с открывающей фигурной скобкой. Между ними пробел.
Правильно
<?php $foo ->bar( $firstArgument, $secondArgument, $thirdArgument ); ?>
Неправильно
<?php $foo ->bar( $firstArgument, $secondArgument, $thirdArgument); ?>
Конструкция switch case
Конструкцию делим на три уровня: switch, case, echo/break. Каждый уровень начинается с отступа. Таким образом, наш код визуально выглядит состоящим из трех столбцов.
Если в конструкции не используется break, поставьте // no break.
Правильно
<?php switch ($expr) { case 0: echo `First case, with a break`; break; case 1: echo `Second case, with fall through`; // no break case 2: case 3: case 4: echo `Third case, return instead of break`; return; default: echo `Default case`; break; } ?>
Читайте также!
Неправильно
<?php switch ($expr) { case 0: echo `First case, with a break`; break; case 1: echo `Second case, with fall through`; case 2: case 3: case 4: echo `Third case, return instead of break`; return; default: echo `Default case`; break; } ?>
Конструкция try catch
Тело try и тело catch отделяются одним отступом. Пробелы нужно поставить:
- между try и {
- между } и catch
- между catch и (
- между ) и {
Catch и скобку } ставим на одну строку.
Правильно
<?php try { // тело try } catch (FirstExceptionType $i) { // тело catch } catch (OtherExceptionType $i) { // тело catch } ?>
Неправильно
<?php try { // тело try } catch (FirstExceptionType $i) { // тело catch } catch (OtherExceptionType $i) { // тело catch } ?>
Конструкция if, elseif, else
Операторы и открывающую фигурную скобку пишем на одной строке. Закрывающую фигурную скобку оператора пишем на той же строке, что и оператор. Заключительную фигурную скобку пишем на отдельной строке. Оператор else if пишем как единое слово — elseif. Тело оператора отделяем отступом.
Правильно
<?php if ($a == $b) { echo `A равно B`; } elseif ($a == $c) { echo `A равно C`; } else { echo `A ничему не равно`; } ?>
Неправильно
<?php if ($a == $b) { echo `A равно B`; } else if ($a == $c) { echo `A равно C`; } else { echo `A ничему не равно`; } ?>
Комментарии в коде
Обратная сторона медали — отсутствие пояснений. Коды со сложной архитектурой, скриптами, с большой вложенностью требуют пометок. В этом случае комментарии помогут быстро ориентироваться в коде другим членам команды. Часто они помогают и самому разработчику кода. Главное — придерживаться золотой середины и комментировать только важные моменты.
Читайте также!
Больше информации о комментариях вы найдете в статье «Почему комментарии в коде — зло». А если вы считаете, что код — не место для шуток, предлагаю подборку самых забавных комментариев программистов.
Чек-лист «Инспекция кода»
Предлагаем чек-лист для самостоятельной проверки чистоты кода. Если вы будете инспектировать чужой код, помните, что программист — творческая профессия. А творческие люди обычно тяжело воспринимают критику. Будьте лояльней.
Итак,
- Легко ли воспринимать код визуально?
- Присутствуют ли комментарии? насколько они необходимы?
- Соответствует ли код стандартам PSR-1 и PSR-2? Краткая выжимка стандартов приведена в разделе “Правила кода PHP”.
- Используете ли вы систему документирования phpDoc или подобную?
- Нужно ли делать перерыв в чтении, чтобы разобраться в написанном?
- Проведен ли рефакторинг?
- Есть ли дублирование в блоках, функциях и пр.?
- Понятны ли названия переменных, имена методов и пр.?
- Какова длина строк, методов, функций, классов, файла?
- Вы искали ошибки и баги?
- Как можно еще улучшить код?
- Можно ли сделать его короче?
- Можно ли сделать его эффективней?
Желательно провести тестирование. Руководствуйтесь тремя принципами:
- Тесты должны быть полными.
- Тесты должны соответствовать установленным требованиям.
- Тесты должны проводиться на нужном уровне тестирования.
Дополнительную информацию по тестированию вы найдете в материале «Тестирование кода для чайников».
Заключение
Код — это не личный захламленный ящик с грудой бумаг. Правильный код — это картотека в Ленинской библиотеке. В нем все структурировано, задокументирована важная информация, есть связи с другими каталогами и библиотеками. Чистый код может разобрать и профи, и начинающий программист. С ним приятно работать, он характеризует уровень мастерства своего разработчика.