Подтвердить что ты не робот

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

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

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

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

  • Схема кода: отступы (2 пробела, 4 пробела, вкладки,...), символы новой строки, разрывы строк и т.д.
  • Пробелы, например, "function (arg)" vs. "function (arg)"
  • Точка с запятой или точка с запятой, объявление var,...
  • Именование, например, do_this() vs. doThis(), var_name vs varName,...
  • node.js и JavaScript-идиомы, например, == vs. ===, callback first arg - объект ошибки,...
  • Комментарии и документация
  • Сопутствующие инструменты, такие как lint checker, unit test framework,...

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

4b9b3361

Ответ 1

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

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

Я постараюсь забросить там хорошую меру;)

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

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

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

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

Ответ 3

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

Ответ 4

При использовании node от терминала полезно, чтобы ваш исходный код использовал пробелы для отступов. В противном случае каретка "error here" не будет выстраиваться в линию.

С вкладками:

        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, но я бы не подозревал.

Ответ 5

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

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

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

Ответ 7

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

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

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

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

Edit:

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