- PVSM.RU - https://www.pvsm.ru -
У нас, как и у всех, изначально в разработке использовались стандарты написания кода, но на деле они ограничивались примерно таким:
— В кэмелкейсе пишем?
— Да, как обычно, в кэмелкейсе
… прошло две недели…
— Мы ж в кэмелкейсе договаривались!!!
В нашем случае не было разве, что последней фразы.
Уже давно хотелось как-то это систематизировать, но никак не доходили руки до выбора между стилями от jQuery, Google, ideomatic.js и Crockford.
Когда месяц с небольшим назад в trending гитхаба попало руководство от AirBnB, оно тут же попалось нам на глаза…
А неделю назад мы его перевели, в первую очередь для собственных нужд, но не поделиться с сообществом не могли.
Прочитать крайне советую как минимум всем начинающим js-разработчикам.
Чем оно так отличается от других руководств, и чем оно так приглянулось нам?
Дело в том, что оно не столько указывает на то, как стилистически оформлять код, сколько рассказывает, как нужно грамотно писать на JavaScript. Это не только список указаний для JSLint, но платформа для того, чтобы начать писать хорошо: этот текст, который можно вдумчиво прочитать за час, дает стажерам больше понимания JavaScript, чем день собственных проб и ошибок и вопросов старшим товарищам.
Относительно оформления — в этом руководстве используются «популярные» выборы.
Примеры:
табуляция в 2 пробела используется, так же в Google, npm, Node.js, Idiomatic
Всегда использовать точку с запятой, как в Google, Node.js, Crockford
Объявление переменных с «висячими» запятыми в одном var, как в Idiomatic, jQuery
Что интересно тут указывается даже подобный момент:
Объявляйте переменные, которым не присваивается значение, в конце. Это удобно, когда вам необходимо задать значение одной из этих переменных на базе уже присвоенных значений.
camelCase для переменных — как в Google, npm, Node, Idiomatic
При этом в этом гайде явно указывается:
Используйте camelCase для именования объектов, функций и переменных.
Используйте PascalCase для именования конструкторов классов.
Понятно и ясно объясняются некоторые моменты, например:
Дополнительная запятая в конце объектов: Нет. Она способна вызвать проблемы с IE6/7 и IE9 в режиме совместимости. В некоторых реализациях ES3 запятая в конце массива увеличивает его длину на 1, что может вызвать проблемы. Этот вопрос был прояснен только в ES5 (оригинал):
Редакция ECMAScript 5 однозначно устанавливает факт, что запятая в конце ArrayInitialiser не должна увеличивать длину массива. Это несемантическое изменение от Редакции ECMAScript 3, но некоторые реализации до этого некорректно разрешали этот вопрос.
Наглядно объясняются механизмы работы «всплытия» объявлений переменных и функций внутри области видимости.
Объявление анонимной функции поднимает к верху области видимости саму переменную, но не ее значение.
Именованные функции поднимают на верх области видимости переменную, но не ее значение. Имя функции при этом недоступно в области видимости переменной и доступно только изнутри.
Объявления функции поднимают на верх текущей области видимости и имя, и свое значение.
Каждый пример понятно и наглядно иллюстрирован тестовым блоком кода, очень многие вещи, выбранные из соображений быстродействия или особенностей работы, сопровождаются ссылками на jsPerf, спецификацию ECMAScript (для тех недоверчивых зануд, кому недостаточно простых объяснений) или отдельные весьма интересные статьи по данной тематике.
В общем — как минимум это весьма интересное чтиво, и если вы давно собирались формализировать стилистику написания кода — сейчас самое время.
В комплекте идет набор ссылок на другие основные гайды, список команд, которые уже используют данный стиль написания кода, сайты, которые стоит почитывать и еще много полезных ссылок, и самое главное — конфигурация для JSLint в Sublime.
Вот краткий пересказ содержимого для самых занятых:
От себя мы добавили буквально несколько разъясняющих блоков и внесли одно изменение: в оригинале предлагалось использовать комментарии //FIXME и //TODO, но IDE и редакторы кода обычно подсвечивают только //TODO, так что вместо //FIXME предлагается использовать //TODO FIXME для более простой навигации по автоматически сгенерированному индексу.
На всякий случай дублирую ссылки:
Автор: Jabher
Источник [3]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/javascript/49978
Ссылки в тексте:
[1] https://github.com/airbnb/javascript: https://github.com/airbnb/javascript
[2] https://github.com/uprock/javascript: https://github.com/uprock/javascript
[3] Источник: http://habrahabr.ru/post/204848/
Нажмите здесь для печати.