Стиль кодирования

Стиль кодирования - правила написания кода, позволяющие улучшить читабельность кода, легкость исправления другими разработчиками.

Никто не запрещает использовать ваш стиль кодирования, однако данный материал очень рекомендуется к употреблению и улучшению читабельности кода не только для вас самих, но другим программистам, которые будут читать и править ваш код.

  1. Имена файлов, фукнций, переменных, классов, методов и пр - пишем всегда в нижнем регистре, слова разделяем нижним подчеркиванием, например: get_element_by_id(), $pdf_class, controller_index.php
    исключением является:
    -названия констант, они пишутся в верхнем регистре, например: DOC_ROOT
    -сторонние подключаемые библиотеки, например class TcPDF, tcPDF.class.php, однако экземпляры объекта и пр. элементы создаются по общим правилам, напрмер: $pdf_document = new TcPDF();
  2. PHP-код должен всегда обрамляться полными PHP-тегами:

    ?>
    Короткие теги не допустимы.
    В файлах, содержащих только PHP-код, закрывающий тег должен быть опущен.
  3. Когда строка является литеральной (не содержит подстановок переменных), для ее обрамления должны использоваться апострофы или "одинарные кавычки":

$a = 'Example String';
4. Когда строка литералов сама содержит апострофы, разрешается для обрамления строки использовать "двойные кавычки". Это особенно актуально для SQL-запросов:

$sql = "SELECT `id`, `name` from `people` WHERE `name`='Fred' OR `name`='Susan'";
5. Строки должны объединятся с помощью оператора ".". Пробел должен всегда добавляться до и после оператора "." для улучшения читабельности:
$site_theme = '/core' . '/' . $theme . '/index.php';
6. Когда производится конкатенация строк с помощью оператора ".", разрешается разрывать выражение на несколько строк для улучшения читабельности. В этом случае, каждая следующая строка должна быть дополнена пробелами так, чтобы оператор "." был выровнен под оператором "=":

$sql = "SELECT `id`, `name` FROM `people` "
. "WHERE `name` = 'Susan' "
. "ORDER BY `name` ASC ";

7. Когда определяется индексированный массив с помощью конструкции Array , завершающий пробел должен быть добавлен после каждой запятой для улучшения читабельности:

$sample_array = array(1, 2, 3, 'user_cms', '2.0');

8. Когда определяется ассоциативный массив с помощью конструкции Array , приветствуется разделение выражения на несколько строк. В этом случае, каждая следующая строка должна быть дополнена с помощью пробелов так, чтобы и ключи и значения были выровнены:

$sampleArray = array('firstKey' => 'firstValue',
'secondKey' => 'secondValue');
9. Функции внутри классов должны всегда определять свою область видимости с помощью одного из префиксов private, protected или public.
10. Фигурная скобка классов, методов или фукнций должна открываться на той же строке что и их объявление, закрывающая внизу, например:
public function bar() {
// содержимое класса должно быть
// с отступом в четыре пробела
}
11. Аргументы функции разделяются одним завершающим пробелом после каждой запятой. Это пример допустимого вызова функции для функции, которая принимает три аргумента:

three_arguments(1, 2, 3);
12. Управляющие структуры, основанные на конструкциях if и elseif, должны иметь один пробел до открывающей круглой скобки условия, и один пробел после закрывающей круглой скобки.

Внутри выражения условия между круглыми скобками операторы должны разделяться пробелами для читабельности. Внутренние скобки приветствуются для улучшения логической группировки больших условий.

Открывающаяся фигурная скобка пишется на той же строке, что и условие. Закрывающаяся фигурная скобка пишется на отдельной строке. Все содержимое между скобками пишется с отступом в четыре пробела.

if ($a != 2) {
$a = 2;
}
13. для всех "if", "elseif" или "else" выражений необходимо использовать фигурные скобки.
14. Управляющие структуры, написанные с использованием "switch" конструкции, должны иметь один пробел до открывающей круглой скобки условного выражения, и также один пробел после закрывающей круглой скобки.

Все содержимое между фигурными скобками пишется с отступом в четыре пробела. Содержимое каждого "case" выражения должно писаться с отступом в дополнительные четыре пробела.

switch ($num_people) {
case 1:
break;

case 2:
break;

default:
break;
}
15. перед каждым классом и фукнцией должно быть описание в формате phpDocumentor на английском языке, если нет времени, допускается на родном, с указанием языка
примеры:
http://www.phpdoc.org/docs/latest/for-users/phpdoc/basic-syntax.html

16. кодировка всех файлов в utf-8 без BOM
17. Проблемы до и после '!', >, <,=,==, !=,>=, <=
if ( ! condition) {
// код...
}