-
Код на PHP должен соответствовать стандарту PSR1/PSR2.
-
Доступ к базе данных должен осуществляться через PDO с использованием подготовленных запросов и плейсхолдеров.
Плохо:
$statement = $pdo->query( " SELECT name FROM Users WHERE sex='$userSex' " );
Хорошо:
$statement = $pdo->prepare( " SELECT name FROM Users WHERE sex=:userSex " ) ->execute( array( ":userSex" => $userSex ) );
Данный пункт ни коем образом не запрещает использование классов-оберток и/или синглтонов
-
Если функция возвращает значение, то она должна возвращать его в любой ситуации (undefined не допускается). Если возвращать нечего, то можно вернуть False как признак ошибки.
Плохо:
function getName($id) { if ($id==1) { return "John"; } }
Плохо:
function getName($id) { if ($id==1) { return "John"; } else { return; } }
Хорошо:
function getName($id) { if ($id==1) { return "John"; } else { return false; } }
-
Код при работе не должен производить ворнингов.
-
При разработке в PhpStorm необходимо максимально вычищать ошибки на которые указывает инспекция кода.
-
При разработке в PhpStorm форматирование кода должно производится встроенным автоформатом по стандартам PSR1/PSR2.
-
Если в файле используется только PHP-код, нельзя ставить закрывающий тег PHP, т.к. это может привести к трудноотлавливаемым ошибкам.
-
Не стоит злоупотреблять использованием sprintf для сборки строки без форматирования переменных, т.к. это усложняет читаемость кода.
Плохо:
$db_config=sprintf('mysql:dbname=%s;host=%s',$_CONFIG['db']['name'],$_CONFIG['db']['host']);
Хорошо:
$db_config='mysql:dbname='.$_CONFIG['db']['name'].';host='.$_CONFIG['db']['host'];
Хорошо:
$db_config="mysql:dbname={$_CONFIG['db']['name']};host={$_CONFIG['db']['host']}";
- Код должен проходить проверку JSLint без предупреждений.
- При разработке в PhpStorm необходимо максимально вычищать ошибки которые на которые указывает инспеция кода.
- При разработке в PhpStorm форматирование кода должно производится встроенным автоформатом.
- При разработке нужно предусмотреть неправильное поведение, как пользователя, так и компонентов системы, и делать проверку полученных данных на корректность.
- При изменении функционала кода который уже используется в продакшене, необходимо предусмотреть совместимость со старыми конфигами и схемами баз данных, т.к. их обновление может быть рассихронизированно с основным кодом.
- Кодировка текстовых файлов, если нет особых требований, должна быть UTF-8 без BOM.
- Перевод строк в текстовых файлах, если нет особых требований, должен быть в Unix формате.
P.S. Если у кого-то есть дополнения или замечания, с удовольствием выслушаю
P.P.S. Также с удовольствием объясню причины внесения того или иного пункта