Соглашения по стилю кодирования

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

Соглашения по кодированию являются своего рода руководством по стилю написания кода программы. Обычно это:

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

Благодаря соглашениям по кодированию:

  • улучшается читаемость кода
  • облегчается процесс поддержки программы.

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

Имена переменных

Обычно для имен идентификаторов (переменных и функций) используется так называемый "горбатый регистр", начинающийся с маленькой буквы. Все имена начинаются с буквы.


firstName = "John";
lastName = "Doe";

price = 19.90;
tax = 0.20;

fullPrice = price + (price * tax); 

Пробелы вокруг операторов

Всегда ставьте пробелы вокруг операторов ( = + - * / ) и после запятых:


var x = y + z;
var values = ["Volvo", "Saab", "Fiat"]; 

Отступы

Всегда используйте 4 пробела для отступа блоков кода:


function toCelsius(fahrenheit) {
    return (5 / 9) * (fahrenheit - 32);
} 

Внимание! Не используйте для отступов табуляцию. Разные редакторы интерпретируют табуляцию по разному.

Правила для выражений

Общие правила для простых выражений:

  • Всегда заканчивайте простые выражения точкой с запятой.

var values = ["Volvo", "Saab", "Fiat"];

var person = {
    firstName: "John",
    lastName: "Doe",
    age: 50,
    eyeColor: "blue"
}; 

Общие правила для сложных (составных) выражений:

  • Открывающую фигурную скобку ставьте в конце первой строки.
  • Перед открывающей фигурной скобкой ставьте пробел.
  • Закрывающую фигурную скобку ставьте на новой строке без пробелов перед ней.
  • Не заканчивайте сложные выражения точкой с запятой.

Функции:


function toCelsius(fahrenheit) {
    return (5 / 9) * (fahrenheit - 32);
} 

Циклы:


for (i = 0; i < 5; i++) {
    x += i;
} 

Условия:


if (time < 20) {
    greeting = "Добрый день";
} else {
    greeting = "Добрый вечер";
} 

Правила для объектов

Общие правила для объявления объектов:

  • Ставьте открывающую фигурную скобку на той же строчке, что и имя объекта.
  • Между именем свойства и его значением ставьте двоеточие с пробелом.
  • Строковые значения заключайте в кавычки, а числовые нет.
  • Не добавляйте запятую после последней пары "свойство-значение".
  • Закрывающую фигурную скобку ставьте на новой строке без пробелов перед ней.
  • Всегда после определения объекта ставьте точку с запятой.

var person = {
    firstName: "John",
    lastName: "Doe",
    age: 50,
    eyeColor: "blue"
}; 

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


var person = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"}; 

Длина строки меньше 80 символов

Для улучшения читаемости строка кода не должна превышать длину в 80 символов.

Если выражение JavaScript не помещается на одной строке, то лучшее место для переноса, это после оператора или запятой:


 document.getElementById("demo").innerHTML =
    "Привет, мир!"; 

Соглашение по именам

При написании кода всегда используйте одни и те же соглашения по именам. Например:

  • Имена переменных и функций пишутся в "горбатом регистре", начинающимся с маленькой буквы - имяПеременной
  • Имена глобальных переменных пишутся большими буквами - ИМЯПЕРЕМЕННОЙ (Мы не советуем это делать, но это вполне обычная практика)
  • Имена констант (вроде PI) пишутся большими буквами

Что лучше использовать в именах переменных — дефис (имя-переменной), "горбатый регистр" (имяПеременной) или подчеркивание (имя_переменной)?

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

Дефис в HTML и CSS
Атрибуты в HTML5 могут начинаться с сочетания data- (data-quantity, data-price).

В CSS дефис используется в именах свойств (font-size).

В JavaScript использование дефиса в именах запрещено, так как он может быть ошибочно принят за оператор вычитания.

Подчеркивание
Многие программисты, особенно работающие с базами данных SQL, предпочитают в именах использовать символ подчеркивания (date_of_birth).

Часто подчеркивание используется в документации по PHP.

Верхний "горбатый регистр" (PascalCase)
PascalCase часто используют программисты на языке C.

Нижний "горбатый регистр" (camelCase)
camelCase используется самим JavaScript, jQuery и другими библиотеками JavaScript.

Внимание! Не начинайте имена с символа доллара ($). Это приведет к конфликту с многими библиотеками JavaScript.

Загрузка JavaScript в HTML

Для загрузки внешних скриптов используйте простой синтаксис (атрибут type не нужен):


<script src="//msiter.ru/myscript.js"></script>

Доступ к элементам HTML

Следствием "неопрятного" стиля в HTML могут стать ошибки в JavaScript.

Следующие два выражения JavaScript дадут разные результаты:


var obj =  getElementById("Demo")

var obj = getElementById("demo") 

По возможности в HTML используйте те же соглашения по именам (как в JavaScript).

Расширения файлов

Файлы HTML должны иметь расширение .html (не .htm).

Файлы CSS должны иметь расширение .css.

Файлы JavaScript должны иметь расширение .js.

В названиях файлов используйте только маленькие буквы

Большинство веб-серверов (Apache, Unix) регистрозависимы в отношении имен файлов: нельзя получить доступ к файлу с именем london.jpg как London.jpg.

Другие же веб-сервера (Microsoft, IIS) регистронезависимы: обратиться к файлу с именем london.jpg можно как London.jpg или london.jpg.

Если вы смешиваете верхний и нижний регистры, то вы должны быть чрезвычайно последовательным.

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

Чтобы избежать этой проблемы, всегда в названиях файлов используйте нижний регистр.

Быстродействие

Соглашения по кодированию не предназначены и не учитываются компьютерами. Большинство правил написания кода мало влияют на процесс выполнения программы.

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

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