Понедельник, 19.02.2018, 23:05
Приветствую Вас Гость | RSS

Bitrix программирование

Категории раздела
Статистика



Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа

Правила написания исходного кода на PHP (Часть 1)

Каталог статей

Главная » Статьи » Программирование

Правила написания исходного кода на PHP (Часть 1)

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

Правила форматирования кода должны быть едиными во всем проекте. И крайне желательно, чтобы они были очень похожими между проектами.


1.      Форматирование кода

 

1.1.   Структурирование текста

 

1.1.1.     Длина строки

 

Нужно стараться избегать строк длинной более 120 символов. Если строка превышает этот размер, то нужно использовать правила переноса строки.

 

1.1.2.     Правила переноса строки

 

Если длина строки превышает 120 символов, то необходимо пользоваться следующими правилами переноса:

·         переносить можно после запятой или перед оператором;

·         переносимая строка должна быть сдвинута относительно верхней на один символ табуляции;

·         переносы должны быть в стиле UNIX.

 

Пример 1:

 

для строки

 

$arAuthResult = $USER->ChangePassword($USER_LOGIN, $USER_CHECKWORD, $USER_PASSWORD, $USER_CONFIRM_PASSWORD, $USER_LID);

 

допустимым будет следующий вариант переноса

 

$arAuthResult = $USER->ChangePassword($USER_LOGIN, $USER_CHECKWORD,

$USER_PASSWORD, $USER_CONFIRM_PASSWORD, $USER_LID);

 

Пример 2:

 

для строки

 

if(COption::GetOptionString("main", "new_user_registration", "N")=="Y" && $_SERVER['REQUEST_METHOD']=='POST' &&

$TYPE=="REGISTRATION" && (!defined("ADMIN_SECTION") || ADMIN_SECTION!==true))

 

допустимым будет следующий вариант переноса

 

if (COption::GetOptionString("main", "new_user_registration", "N") == "Y"

&& $_SERVER['REQUEST_METHOD'] == 'POST' && $TYPE == "REGISTRATION"

&& (!defined("ADMIN_SECTION") || ADMIN_SECTION !== true))

{

}

 

1.1.3.     Пробелы и табуляция

 

Для форматирования отступов в коде нужно использовать табуляцию. Использование пробелов запрещено.

Причины:

·         в случае использования табуляции каждый может настроить в своем редакторе желаемый отступ;

·         используется один символ вместо нескольких;

·         в случае смешивания пробелов и табуляции текст будет "прыгать", разрушая форматирование.

 

1.1.4.     Форматирование подчиненности

 

Подчиненный код должен быть сдвинут от главного ровно на один символ табуляции. Подчиненный код не может находиться на той же строке, что и главный.

 

Пример:

 

не правильно писать так

 

if ($a == 0) {$a = 10;

$b = 1;}

 

правильно писать так

 

if ($a == 0)

{

$a = 10;

$b = 1;

}

 

1.2.   Инструкции, выражения

 

1.2.1.     Выражения

 

Желательно, чтобы в каждой строчке присутствовало только одно выражение

 

Пример:

 

не правильно писать так

 

$a = $b; $b = $c; $c = $a;

правильно писать так

 

$a = $b;

$b = $c;

$c = $a;

 

1.2.2.     Инструкции if, else, while и т.п.

 

Допустимы два написания инструкций:

 

·         если тела всех частей инструкции состоят не более чем из одного выражения, то инструкция может записываться в виде

 

if (условие)

действие1;

else

действие2;

 

·         если тело хотя бы одной из частей состоит более чем из одного выражения, то инструкция должна записываться в виде

 

if (условие)

{

действие1;

}

else

{

действие2;

действие3;

}

 

При написании инструкций должно строго применяться правило "1.1.4 Форматирование подчиненности": тело инструкции должно быть сдвинуто на один символ табуляции вправо от самой инструкции. Фигурные скобки должны находиться на отдельных строках и должны быть на одном уровне с инструкцией.

 

Пример:

 

не правильно писать так

 

if ($a == 0) $a = 10;

else{

$a = 5;

$b = 10;}

 

правильно писать так

 

if ($a == 0)

{

$a = 10;

}

else

{

$a = 5;

$b = 10;

}

 

1.2.3.     Сложные инструкции

 

Сложные инструкции следует разбивать по строкам в соответствии с правилами пункта 1.2.2.

 

Например,

 

if(COption::GetOptionString("main", "new_user_registration", "N")=="Y" && $_SERVER['REQUEST_METHOD']=='POST' &&

$TYPE=="REGISTRATION" && (!defined("ADMIN_SECTION") || ADMIN_SECTION!==true))

 

можно записать как

 

if (COption::GetOptionString("main", "new_user_registration", "N") == "Y"

&& $_SERVER['REQUEST_METHOD'] == 'POST' && $TYPE == "REGISTRATION"

&& (!defined("ADMIN_SECTION") || ADMIN_SECTION !== true))

{

}

 

Очень сложные инструкции рекомендуется разбивать на несколько более простых.

 

Например,

 

if((!(defined("STATISTIC_ONLY") && STATISTIC_ONLY && substr($APPLICATION->GetCurPage(), 0,

strlen(BX_ROOT."/admin/"))!=BX_ROOT."/admin/")) && COption::GetOptionString("main", "include_charset", "Y")=="Y"

&& strlen(LANG_CHARSET)>0)

 

можно записать так

 

$publicStatisticOnly = False;

if (defined("STATISTIC_ONLY")

&& STATISTIC_ONLY

&& substr($APPLICATION->GetCurPage(), 0, strlen(BX_ROOT."/admin/")) != BX_ROOT."/admin/")

{

$publicStatisticOnly = True;

}

 

if (!$publicStatisticOnly && strlen(LANG_CHARSET) > 0

&& COption::GetOptionString("main", "include_charset", "Y") == "Y")

{

}

 

или так

 

if (!defined("STATISTIC_ONLY") || ! STATISTIC_ONLY

|| substr($APPLICATION->GetCurPage(), 0, strlen(BX_ROOT."/admin/")) == BX_ROOT."/admin/")

{

if (strlen(LANG_CHARSET) > 0 && COption::GetOptionString("main", "include_charset", "Y") == "Y")

{

}

}

 

1.2.4.     Форматирование массивов

 

Массивы, которые записываются в несколько строк, следует форматировать следующим образом

 

$arFilter = array(

"key1" => "value1",

"key2" => array(

"key21" => "value21",

"key22" => "value22",

)

);



Источник: http://dev.1c-bitrix.ru/docs/php_recommendation.php
Категория: Программирование | Добавил: Shak (07.06.2010)
Просмотров: 2587 | Теги: Правила написания исходного кода на | Рейтинг: 0.0/0
Поиск

Shak © 2018
Копирование материала без указания автора и ссылки на сайт запрещается.
Если вы разместили материал у себя на сайте обязательно свяжитесь со мной shakleinserg{собака}gmail.com
Создать бесплатный сайт с uCoz