Руководство по стилю кодирования для приложений node.js? [закрыто]

130

Есть ли (или несколько) руководство по стилю кодирования для node.js? Если нет, то какие новые стили используются ведущими проектами узлов с открытым исходным кодом?

Я ищу руководство (или несколько руководств) по линиям PEP 8 , канонического руководства по стилю кодирования для Python. Я видел различные руководства по JavaScript, на которые не стоит ссылаться (в основном старые и ориентированные на клиентский JavaScript). Я нашел один интересный Node.js стиль руководства .

Руководство по стилю кодирования или соглашения по кодированию должны включать (но не ограничиваясь ими):

  • Макет кода: отступ (2 пробела, 4 пробела, табуляция, ...), новые строки, разрывы строк и т. Д.
  • Пробелы, например, «функция (аргумент)» vs. «функция (аргумент)»
  • Точка с запятой или без точки с запятой, объявление var, ...
  • Именование, например, do_this () vs. doThis (), var_name vs. varName, ...
  • node.js и идиомы JavaScript, например, == vs. ===, первый аргумент обратного вызова - это объект ошибки, ...
  • Комментарии и документация
  • Сопутствующие инструменты, такие как проверка линта, структура модульного тестирования, ...

Эта тема, очевидно, очень субъективна, но я думаю, что это важный шаг сообщества по созданию общего и общепринятого стиля кодирования в процессе становления. Кроме того, дело не только во вкусе. В частности, такие правила, как «используйте === вместо ==», имеют прямое влияние на качество кода.

alienhard
источник
Я предполагаю, что это действительно зависит от «структуры», которую вы используете (если таковая имеется), например, вы можете проверить spludo.com/source/coding-standards, однако другие могут принять несколько другие подходы
Poelinca Dorin
4
«Есть ли у кого-нибудь хороший набор руководств по стилю» может быть или не быть субъективным, но «Каковы новые стили?» - определенно. Вы уже нашли руководство Феликса, в котором я, конечно, не согласен с некоторыми аспектами (в некоторых случаях решительно) и согласен с другими аспектами. И это проблема. Очень, очень быстро он переходит в "Нет, стиль, который я вижу в emerge, использует вкладки!" "Нет, в стиле, который я вижу в emerge, используются четыре пробела!" «Нет, в стиле, который я вижу в emerge, используются два пробела!» Когда, конечно, люди на самом деле имеют в виду «стиль, который я предпочитаю», а не «стиль, который, как я вижу, проявляется».
TJ Crowder
2
@TJ Croweder В стиле, который я вижу в emerge, нет пробелов!
Raynos
+1 Классный вопрос. Хотел бы я иметь эти ссылки давным-давно.
Брайан Даунинг
Субъективный вопрос.
Нильс Абильдгаард

Ответы:

120

Я бы просмотрел стандарты кодирования, проверенные JSLint, или посмотрел на автора стандартов кодирования NPM (Исаака Шлютера) .

Вы также можете посмотреть на стиль, используемый известными кодировщиками Node.JS:

На всякий случай закину туда свой;)

Изменить: предложения от @alienhard

ИМО, есть несколько золотых правил, которым вы должны следовать:

  • Никогда не используйте withилиeval
  • Используйте ===более==
  • Всегда объявляйте свои переменные varв соответствующей области - не возвращайтесь к глобальной области.
  • Оберните свое приложение закрытием, (function(){})()если вы планируете выпустить код, который работает как на стороне сервера, так и в браузере.
  • errОбратные вызовы должны принимать в качестве первого аргумента, и если они сами принимают обратный вызов в качестве аргумента, он должен быть последним, напримерcallback(err, param1, param2, callback)

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

chriso
источник
2
Спасибо за ответ. Мне было интересно, почему вы не упомянули Райана;). Но я понял из официальной вики репозитория узлов, что они следуют руководству по стилю JavaScript от Google . Я не знал этого раньше ...
alienhard
15

В городе новый стандарт.

Используйте стандартный стиль .

JS-стандарт стиль

mightyiam
источник
1
Понятия не имею, почему у него всего 3 голоса ...
Люк
4
@Luc, возможно, из-за правила «Нет точек с запятой». Кажется странным выбором для чего-то, что называется «стандартным» стилем.
Даниэль Янковский
Отсутствие точки с запятой - не лучшая идея. Это сломает некоторую минификацию.
denov 06
Этот standardпакет не любит точки с запятой. Если вам нравятся точки с запятой, есть полустандарт
yesnik
10

Вы можете изучить множество хороших практик стиля кодирования из руководств по JavaScript, ориентированных на клиентскую сторону (большинство из них применимо также к node.js в целом, поскольку разница между клиентской и серверной стороной в основном заключается в библиотеках, а не в самом языке). Например, книга « Шаблоны JavaScript» посвящает этой теме некоторые части главы 2 . Также, я бы сказал, что веб-сайт , книга и видео Дугласа Крокфорда являются обязательными для просмотра материалами, чтобы принять конкретные стили кодирования и лучшие практики JavaScript.

yojimbo87
источник
3
+1 к книге Дугласа Крокфорда «JavaScript: хорошие стороны». В краткой / небольшой книге чертовски много информации - много читается, но это одна из лучших книг, которые я читал.
Alex KeySmith
7

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

С вкладками:

        var preps = files.map(function(f) { 
            ^
TypeError: Cannot call method 'map' of null

С пробелами:

        var preps = files.map(function(f) { 
                          ^
TypeError: Cannot call method 'map' of null

Это может быть проблема только Mac, но я подозреваю, что нет.

Даниэль Янковский
источник
OP попросил руководство по стилю. Не какой-то конкретный совет.
mightyiam 05
@mightyiam Верно, но правила отступов являются частью почти каждого руководства по стилю. Возможно, моя точка зрения поможет OP оценить некоторые руководства по стилю, на которые другие будут ссылаться, или поможет ему разработать собственное руководство по стилю.
Даниэль Янковский
6

Прошло некоторое время с тех пор, как я задавал этот вопрос ... а пока я нашел это отличное руководство по JavaScript:

Принципы написания последовательного идиоматического JavaScript

https://github.com/rwldrn/idiomatic.js/

alienhard
источник
2

Для Coffee-Script, где плохие отступы означают ошибки компиляции

использование

:set tabstop=2
:set shiftwidth=2
:set expandtab

популярный кофе проекты zombie, brunchиспользует эту установку для углублений.

Редактировать:

Собственно, просто используйте это! https://github.com/paulmillr/code-style-guides (один из основных участников brunch)

Куанг Ван
источник