Данные рекомендации не могут являться истиной в последней инстанции, однако, следование им поможет улучшить читаемость кода.
Стандарты нужны уже потому, что одинаково достают всех и таким образом, эти все чувствуют себя командой
Не используйте в своем коде транслит. Английский язык - один из интрументов стандартизации кода
$massivSsulok = Array(....);
$linksArr = Array(....);
Давайте осмысленные названия переменным, функциям и т.п. Названия должны отражать смысл того, что хранит переменная, либо, что делает функция.
При именовании переменных идем от глобального к частному - сначала о чем речь, потом конкретные части
$colorRed = '#f00'; $colorGreen = '#0f0'; $objName = "Вася"; $objHealth = "Эмоционально нестабилен";
При именовании функций и методов сначала указывайте что делаем, а потом с чем именно.
getParams(); setParams(); resetPswd();
(Желательно) Старайтесь использовать общепринятые слова и сокращения. Это упростит понимание, а также сократит название переменных, функций и т.п.
getIdentificator(); itemsArray = [];
getID(); itemsArr = [];
Для именования констант используйте заглавные буквы.
define ("foo", "bar"); const foo;
define ("FOO", "bar"); const FOO;
Помните, что 1 функция (или метод) должна выполнять только 1 действие. Используйте несколько небольших функций вместо 1 большой. Это значительно упрощает поддержку и читаемость кода.
function godObj() { action1; action2; ... actionN; }
function init() { action1(); action2(); ... } function action1() { action1; } function action2() { } ....
Ставьте открывающую фигурную скобку блока операторов на той же строке, что и оператор
if ( foo ) { bar(); }
if ( foo ) { bar(); }
Отделяйте аргументы функций от скобок пробелами, если их много или, если как аргумент используется функция.
some(big(func(a(), b()));
some( big( func(a(), b() ) );
Не используйте "магические числа" - числа, значения которых неочевидны.
if ( $action == 2 ) { ... }
const RESIZE = 1; const CROP = 2; if ( $action == self::CROP ) { ... }
Не используйте в коде символ подчеркивания. (Исключением может стать имя константы, которое пишется заглавными буквами)
$some_var = foo; class='some_class'
$someVar = foo; class='some-class'
Не используйте протокол в ссылках. Указание протокола делает ссылку абсолютной.
<a href="http://example.com/">
.example { url: (http://images.ru/somepic.jpg); }
<a href="//example.com/">
.example { url: (//images.ru/somepic.jpg); }
Не используйте символ табуляции. Вместо него используйте символ пробела. Никогда не смешивайте пробелы и табы.
Рекоммендованное кол-во пробелов: 2
Следите за тем, чтобы открывающие и закрывающие скобки были на одном уровне
.foo { bar { ... } }
foo { bar { ... } }
Используйте только нижний регистр (lowercase)
Весь код должен быть написан в нижнем регистре: Это относится к названиям элементов, названиям атрибутов, значениям атрибутов (кроме текста/CDATA), селекторам, свойствам и их значениям (кроме текста).
<A HREF="/">Home</A>
<a href="/">Home</a>
Используйте UTF-8 (без BOM).
Указывайте кодировку в HTML шаблонах и документах с помощью <meta charset="utf-8">. Опускайте кодировку для сss-файлов: для них UTF-8 задана по умолчанию.
Комментируйте неочевидные участки кода
Комментировать стоит, отвечая на вопрос "Зачем это здесь?", а не "Что здесь?". Комментируйте только действительно неочевидные куски кода: необходимость "костылей", необычные алгоритмы и т.п.
Не комментируйте все подряд: если код нуждается в комментарии, может стоит его улучшить?
Следите за актуальностью ваших комментариев, т.к. "просроченные" комментарии могут сбить с толку.
Не комментируйте код: если он не нужен - удалите его. Закомментированный код может порождать массу проблем при дальнейшей поддержке проекта. В крайнем случае - оставьте комментарий о причине комментирования с датой.
// Здесь проходимся по всем элементам массива foreach ( $arr as $elem ) ...
// Заимствованное решение. Взято: http://ru.wikipedia.org/wiki/Куайн_(программирование)#Perl $_=q{$_=q{x};s/x/$_/;print};s/x/$_/;print
Отмечайте задачи через TODO. Указывайте ответственных в круглых скобках. Старайтесь быть максимально конкретными, чтобы задача была понятна даже спустя какое-то время.
/* Поэтому в начале header идет еще одно "костыльное" определение $showSape, для которого Фил допишет хитрый SQL-запрос для определения ID-шника объекта полугодовой давности */
/* TODO(Фил): Заменить "костыль" в header на SQL-запрос для определения ID-шника объекта полугодовой давности для определения $showSape. */
HTML5 (HTML синтаксис) рекомендуется для всех html-документов: <!DOCTYPE html>.
Рекомендуется использовать HTML с типом контента text/html. Не используйте XHTML, так как application/xhtml+xml, хуже поддерживается браузерами и ограничивает возможность оптимизации.
Для именования составных названий классов, id и т.п. используйте дефис как разделитель
#newsblock { } .NewsItem { }
#news-block { } .news-item { }
Для именования составных названий функций, переменных и т.п. используйте lowerCamelCase (каждое составное слово названия, кроме первого, начинается с заглавной буквы)
function getSomeParams() { ... } var newsBlockHeight = 100;
Для общепринятых сокращений, аббревиатур и т.п. используйте заглавные буквы
function getID () { ... } var userHUD = ...;
Всегда ставьте точку с запятой в конце строки.
Для именования составных названий функций, переменных и т.п. используйте lowerCamelCase (каждое составное слово названия, кроме первого, начинается с заглавной буквы)
function getSomeParams() { ... } $newsBlockHeight = 100;
Для общепринятых сокращений, аббревиатур и т.п. используйте заглавные буквы
function getID () { ... } $userHUD = ...;