1. Кол-во переменных на странице - не должно превышать 4-х. При работе с компонентами все нужные данные записываем в массив $arResult
2. Названия переменных - Простые переменные писать строчными (в нижнем регистре), в качестве разделителя нижнее подчеркивание ('_').
Составные имена переменных писать в верблюжьей нотации, где первое слово начинается с маленькой буквы, все остальные с большой в стиле сamelCase.
Для явного указания типа переменной использовать префикс отражающий их тип - $dbUser, $obUser, $arUser, $strUser, $bUser... и т.д.
//Правильно
$error =
$time_of_error =
$error_processor =
//Неправильно
$error-processor =
3. Имена элементов в массивах - В источниках советуют использовать нижний регистр для обозначения переменных, но битрикс по умолчанию использует верхний регистр. Так что будем придерживаться верхнего регистра.
В качестве разделителя слов используется нижнее подчеркивание ('_'), не используется дефис ('-')
//Правильно
$arr['DETAIL_TEXT'] = 'Hello';
//Неправильно
$arr['DETAIL-TEXT'] = 'Hello';
4. Имена функций - Как правило, метод совершает какое-либо действие, поэтому желательно, чтобы из имени было понятно, какое именно действие будет совершаться.
Для этого используют префиксы или суффиксы
Cуффиксы:
Max - чтобы показать максимальное значение
Cnt [count: количество, подсчёт] - чтобы показать текущее значение какого-либо счётчика
Key - чтобы показать ключевое значение. Например: RetryMax содержит максимальное количество возможных попыток, а RetryCnt - номер текущей попытки
Префиксы:
Is - для обозначения вопроса
Get - получить значение
Set - установить значение
Если в имени переменной содержится аббревиатура, лучше вместо всех заглавных оставить только первую букву заглавной, а остальные написать строчными.
Каждое слово в имени класса с большой буквы и никаких символов, кроме букв латинского алфавита
//Правильно
GetHtmlStatistic()
//Неправильно
GetHTMLStatistic()
5. Одиночные и двойные кавычки - Осуществляя доступ к элементам массива, можете использовать как одинарные, так и двойные кавычки. Но выберите что-то одно.
//Правильно
$arr['DETAIL_TEXT'] = 'Hello';
$arr["DETAIL_TEXT"] = "Hello";
//Неправильно
$arr['DETAIL_TEXT'] = "Hello";
6. Глобальные переменные - В именах глобальных переменных рекомендуется использовать префикс 'g'
//Правильно
global $gLog;
global &$grLog;
7. Строки - В качестве отступов использовать табуляцию длиной равной 4 пробела.
Длина строки кода 80-120 символов
Использовать пустые строки для улучшения читаемости и обозначения связанных блоков/логических сегментов кода.
8. Комментарии - Многострочный комментарий в стиле (/* */)
Однострочный комментарий в стиле (// )
//==============================================================================
// CATEGORY LARGE FONT
//==============================================================================
//------------------------------------------------------------------------------
// Sub-Category Smaller Font
//------------------------------------------------------------------------------
/* Title Here Notice the First Letters are Capitalized */
/**
* This is a detailed explanation
* of something that should require
* several paragraphs of information.
*/
//This is a single line quote.
8.1. Комментарии - при написании функций или ajax-файлов. Нужно описать назначение файла (кратко), указать дату, автора и входные и выходные данные
/*
* create: 01-09-2021 autor: popkse
* Генерирует pdf с qr кодом
* на входе принимает значение url
* на выходе ссылка на файл pdf
*/
8.2. Комментарии - при изменении функций или ajax-файлов. Нужно указать дату, автора и описать что было сделано
/*
* create: 01-09-2021 autor: popkse
* Генерирует pdf с qr кодом
* на входе принимает значение url
* на выходе ссылка на файл pdf
* update 02-09-2021 autor: nikita
* изменял верстку pdf файла
*/
9. Ключевые слова PHP - true, false, null писать в нижнем регистре. Весь список ключевых слов можно посмотреть тут
10. Правила расстановки скобок () рядом с операторами и функциями - Не ставьте скобки сразу за операторами. Разделите оператор и скобки пробелом
Ставьте скобки непосредственно сразу за именем функции
Не используйте скобки в блоке return, если нет в этом необходимости
//Правильно
if (condition)
{
}
while (condition)
{
}
strcmp($s, $s1);
return 1;
//Неправильно
if(condition)
{
}
while(condition)
{
}
strcmp ($s, $s1);
return (1);
11. Конструкция if - Идем по стандарту PSR-2. Никаких других пробелов, отступов и т.д. Делаем так, как на примере. Скобочки все на месте, пробелы на месте, никаких лишних переносов
//Правильно
if ($expr1) {
// тело if
} elseif ($expr2) {
// тело elseif
} else {
// тело else
}
//Допускается
if ($expr1)
{
//тело if
}
elseif ($expr2)
{
//тело elseif
}
else
{
//тело else;
}
//Правильно, но мы не будем использовать
if($a > $b):
echo $a." больше, чем ".$b;
elseif($a == $b): // Заметьте, тут одно слово.
echo $a." равно ".$b;
else:
echo $a." не больше и не равно ".$b;
endif;
//Неправильно
if ($expr1){ /*тело if*/ }
elseif ($expr2){ /*тело elseif*/ }
else{ /*тело else;*/ }
12. Конструкции while, do while - Идем по стандарту PSR-2. Никаких других пробелов, отступов и т.д. Делаем так, как на примере. Скобочки все на месте, пробелы на месте, никаких лишних переносов
//Правильно
while ($expr) {
// тело конструкции
}
do {
// тело конструкции
} while ($expr);
//Допускается
while ($expr)
{
//structure body
}
do
{
//structure body;
}
while ($expr);
13. Конструкции for - Идем по стандарту PSR-2. Никаких других пробелов, отступов и т.д. Делаем так, как на примере. Скобочки все на месте, пробелы на месте, никаких лишних переносов
Разеберем выражение в скобках ($i = 0; $i < 10; $i++). После открытия и перед закрытием скобки пробел не нужен. Пробелы нужны между выражениями и опереторами.
//Правильно
for ($i = 0; $i < 10; $i++) {
// тело for
}
//Допускается
for ($i = 0; $i < 10; $i++)
{
//тело for
}
14. Конструкции foreach - Идем по стандарту PSR-2. Никаких других пробелов, отступов и т.д. Делаем так, как на примере. Скобочки все на месте, пробелы на месте, никаких лишних переносов
//Правильно
foreach ($iterable as $key => $value) {
// тело foreach
}
//Допускается
foreach ($iterable as $key => $value)
{
//тело foreach
}
15. Конструкции try, catch - Идем по стандарту PSR-2. Никаких других пробелов, отступов и т.д. Делаем так, как на примере. Скобочки все на месте, пробелы на месте, никаких лишних переносов
//Правильно
try {
// тело try
} catch (FirstExceptionType $e) {
// тело catch
} catch (OtherExceptionType $e) {
// тело catch
}
//Допускается
try
{
//тело try
}
catch (ExceptionType $e)
{
//тело catch
}
Ознакомиться с правилами оформления кода от битрикс - тут
Ознакомиться со стандартами оформления php-кода PSR - тут
Неплохая статья в сжатом виде про оформление кода - тут