Бесплатная CMS  - Limbo CMS (система управления сайтом)
Главная arrow Введение в Лимбо arrow Новые шаблоны для Limbo

Навигация
Сайт
Каталог
Материалы сайта

RSS

Стандарт программирования для Limbo Версия для печати
14.02.2005 3491 Опубликовал: Serebro

8 Стандарт программирования для Limbo

8.1 Настройки редактора

Табуляция, но не пробелы: При написании кода для отражения структуры не используйте пробелы. Используйте табуляции. Это уменьшает объем файла не нарушая структуры.

Перевод строки: Убедитесь, что ваш редактор сохраняет файлы в формате UNIX. Это означает, что символом конца строки является не CR/LF для Win или CR для Mac, а LF. Для этих целей используйте специализированные редакторы для работы с HTML/PHP или используйте встроенный редактор FAR-менеджера.

8.2 Соглашения об именах

В нашем соглашении об именах мы не будем использовать Венгерскую нотацию (http://web.umr.edu/~cpp/common/hungarian.html)

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

Неправильно:
$currentuser
$currentUser

Правильно:
$current_user

Имена должны быть наглядными и краткими. Не нужно давать переменным очень длинные имена, но лучше писать понятнее, чем гадать для чего какая переменная нужна.

Циклы и индексы: Единственная ситуация в которой возможно использование переменной из одного символа это в цикле при указании индекса. В этом случае индекс внешнего цикла всегда должен быть $i. Если внутри цикла есть ещё цикл, то имя переменной индекса вложенного цикла будет $j, затем $k и т.д. Если в цикле может применяться переменная с понятным именем то вышеприведенное правило не применяется. Например:

for ($i = 0; $i < $outer_size; $i++)
{
     for ($j = 0; $j < $inner_size; $j++)
     {
          foo($i, $j);
     }
}

Имена функций: Функция также нужно давать понятные имена, в них все символы тоже в нижнем регистре. Предпочтительно, чтобы в имени функции был глагол. Правильные имена функций: print_login_status(), get_user_data(), и т.п.

Параметры функции: Параметры функции подчиняются тому же правилу, что и переменные.

Резюме: Основная идея это не ухудшить понятность кода из-за лени. Во всём должен быть здравый смысл и сбалансированность. Например: print_login_status_for_a_given_user() это слишком сложно, достаточным будет print_user_login_status() или даже print_login_status().

8.3 Оформление кода

Используйте стандартный заголовок новых файлов. Здесь приведён пример такого заголовка, который должен быть включен в начале всех файлов:

/***************************************************************************
* Заголовок скрипта
* @ Package #package name#
* @ Copyright (C) 2004 #auther name#
* @ All rights reserved
* @ #package name# is Free Software
* @ Released under GNU/GPL License : http://www.gnu.org/copyleft/gpl.html
* @ Version #version#
**************************************************************************/

Всегда используйте фигурные скобки: Это не тот случай когда можно лениться написать 2 дополнительных символа в ущерб ясности кода. Даже если внутри конструкции всего одна строка используйте фигурные скобки! Например:

Неправильно:
if (condition) do_stuff();

if (condition)
    do_stuff();

while (condition)
   do_stuff();

for ($i = 0; $i < size; $i++)
   do_stuff($i)

Правильно:
if (condition)
{
   do_stuff();
}

while (condition)
{
   do_stuff();
}

for ($i = 0; $i < size; $i++)
{
   do_stuff();
}

Где поместить фигурные скобки: Фигурные скобки всегда должны стоять на своей собственной строке. Закрывающая фигурная скобка всегда должная быть в том же столбце, что и открывающая. Например:
if (условие)
{
   while (условие2)
   {
      ...
   }
}
else
{
   ...
}

for ($i = 0; $i < $size; $i++)
{
   ...
}

while (условие)
{
   ...
}

function do_stuff()
{
   ...
}

Используйте пробелы между слов: Это ещё один простой способ сделать код читаемым. Ставьте пробелы после каждого слова и знака, кроме скобок и кавычек. Например:

Каждая пара показывает правильный и неправильный вариант.
$i=0;
$i = 0;

if($i<7) ...
if ($i < 7) ...

if ( ($i < 7)&&($j > 8) ) ...
if (($i < 7) && ($j > 8)) ...

do_stuff( $i, "foo", $b );
do_stuff($i, "foo", $b);

for ($i=0; $i<$size; $i++) ...
for ($i = 0; $i < $size; $i++) ...

$i=($j < $size)?0:1;
$i = ($j < $size) ? 0 : 1;

Старшинство операторов: Всегда делайте старшинство операторов очевидным, используя скобки, чтобы было понятно условия. Пример:
// Кто знает какой будет результат?
$bool = ($i < 7 && $j > 8 || $k == 4);

// Здесь результат очевиднее
$bool = (($i < 7) && (($j < 8) || ($k == 4)));

Оформление SQL-кода: Вот пример того, как должен выглядеть SQL-код. Обратите внимание на использование регистра, скобок. Например:
SELECT field1 AS something, field2, field3
   FROM table a, table b
   WHERE (this = that)
       AND (this2 = that2)

8.4 Общие рекомендации

Использование строковых переменных: Есть два различных способа использовать текстовые строки в PHP - с одиночными кавычками (апостроф) или с двойными. Основное различие в том, что синтаксический анализатор делает некоторые преобразования строк с двойными кавычками. Используйте одиночные кавычки если вы точно знаете, что эти преобразования не нужны. Это увеличит скорость выполнения скрипта.

Также, если вы используете строковую переменную, как параметр функции, то кавычки использовать не нужно. Это будет только лишняя работа синтаксическому анализатору PHP. Например:

Неправильно:
$str = "This is a really long string with no variables for the parser to find.";
do_stuff("$str");

Правильно:
$str = 'Thisisareallylongstringwithnovariablesfortheparsertofind.';
do_stuff($str);

Ассоциативные ключи массива: В PHP есть возможность использовать строковое значение ключа ассоциативного массива. Например:

Неправильно:
$foo = $assoc_array[blah];

Правильно:
$foo = $assoc_array['blah'];

Комментарии: Комментарий в коде скрипта должен описывать назначение функции, её входные параметры и результат, а также возможные ошибки. Это нужно для того чтобы любой мог воспользоваться этой функцией не разбираясь в её коде.

Все комментарии должны быть в таком формате:
// Комментарий начинается с большой буквы и без точки в конце

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

Сокращенные операторы: единственные сокращенные операторы, которые осложняют удобочитаемость это прибавление/инкримент ($i ++) и вычитание/декримент ($j-). Эти операторы не должны использоваться как часть выражения. Хотя могут использоваться в случае если они стоят на отдельной строке. Например:

Неправильно:
$array[++$i] = $j;
$array[$i++] = $k;

Правильно:
$i++;
$array[$i] = $j;

$array[$i] = $k;
$i++;

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

Неправильное использование:
(($i < $size) && ($j > $size)) ? do_stuff($foo) : do_stuff($bar);

Правильное:
$min = ($i < $j) ? $i : $j;

Неинициализированные переменные. Для избежания ошибок во время выполнения скрипта (E_ALL) связанных с использованием неинициализированных переменных используйте функцию isset (). Эта функция проверяет была ли эта переменная инициализирована. Например:

Не корректно:
if ($forum) ...

Правильно:
if (isset($forum)) ...


English
Switch to English...
BabelFish.AltaVista.com auto-translate
Скачать Limbo
Ваше мнение?
Что вам мешает использовать Limbo в своих проекта
Безопасность
Недостаток компонентов/модулей
Слабая техподдержка
Плохой форум
Плохие отзывы о Limbo
Недостаток документации


Результаты