Посібник зі стилю кодування для додатків node.js? [зачинено]


130

Чи існує (або кілька) посібник зі стилю кодування для node.js? Якщо ні, то які нові стилі використовуються в топ-проектах з відкритим вихідним кодом?

Я шукаю посібник (або кілька путівників) по лінії PEP 8 , канонічного посібника зі стилю кодування для Python. Я бачив різні посібники JavaScript, які не варто посилатися тут (переважно старі та орієнтовані на JavaScript на стороні клієнта). Я знайшов один цікавий Node.js стиль керівництва .

Посібник зі стилю кодування або конвенції про кодування повинні містити (але не обмежується цим):

  • Макет коду: відступ (2 пробіли, 4 пробіли, вкладки, ...), нові рядки, розриви рядків тощо.
  • Пробіл, наприклад, "функція (arg)" проти "функція (arg)"
  • Точка з комою або без крапки з комою, декларація var, ...
  • Назви, наприклад, do_this () vs. doThis (), var_name vs. varName, ...
  • ідіоми node.js та JavaScript, наприклад, == vs. ===, перший аргумент зворотного виклику - це об'єкт помилки, ...
  • Коментарі та документація
  • Супровідні інструменти, такі як перевірка волокон, рамка тестування блоку, ...

Ця тема, очевидно, є дуже суб'єктивною, але я вважаю, що це важливий крок спільноти до встановлення загального і широко прийнятого стилю кодування в процесі дозрівання. Крім того, справа не лише в смаку. Зокрема, такі правила, як "використання === замість ==", мають прямий вплив на якість коду.


я гадаю, що це дійсно залежить від "рамки", яку ви використовуєте (якщо є), наприклад, ви можете перевірити spludo.com/source/coding-standards, проте інші можуть розглянути трохи інші
підходи

4
"У когось є гарний набір посібників зі стилів" може бути, а може і не бути суб'єктивним, але "Які існують стилі", безумовно, є. Ви вже знайшли посібник Фелікса, що, звичайно, я не згоден з аспектами (в деяких випадках категорично) і згоден з іншими аспектами. І в цьому проблема. Дуже, дуже швидко він потрапляє в "Ні, стиль, який я бачу, використовує вкладки!" "Ні, стиль, який я бачу з'являється, використовує чотири пробіли!" "Ні, стиль, який я бачу, з'являється, використовує два пробіли!" Коли, звичайно, мається на увазі те, що люди насправді мають на увазі "стиль, який я віддаю перевагу", а не "стиль, який я бачу".
TJ Crowder

2
@TJ Croweder Стиль, який я бачу, як виникає, не використовує пробілів!
Райнос

+1 Дивовижне запитання. Я б хотів, щоб я мав ці посилання століттями назад.
Брайан Даунінг

Суб’єктивне запитання.
Niels Abildgaard

Відповіді:


120

Я переглянув стандарти кодування, перевірені JSLint, або подивився б на автора стандартів кодування NPM (Isaac Shlueter's) .

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

Я кину туди на добру міру;)

Редагувати: пропозиції від @alienhard

IMO є кілька золотих правил, яких слід дотримуватися:

  • Ніколи не використовуйте withабоeval
  • Використовуйте ===понад==
  • Завжди оголошуйте свої змінні varу відповідній області - не відступайте до глобальної області
  • Закрийте додаток, (function(){})()якщо ви плануєте випустити код, який працює як на сервері, так і в браузері
  • Відклики errвикликів повинні братися за перший аргумент, і якщо вони самі приймають зворотний зв'язок як аргумент, він повинен бути останнім, наприкладcallback(err, param1, param2, callback)

Відступ, проміжок між дужками та ключовими словами та розміщення крапки з комою - це питання переваги.


2
Дякую за відповідь. Мені було цікаво, чому ти не згадав про Райана;). Але я зрозумів, що з офіційної вікі node repo, що вони слідують керівництву Google щодо стилю JavaScript . Я не знав цього раніше ...
alienhard

15

У місті є новий стандарт.

Використовуйте стандартний стиль .

js-стандартний стиль


1
Я поняття не маю, чому це лише 3 відгуки ...
Люк

4
@Luc, можливо, через правило "Без крапки з комою". Здається, що це дивний вибір для чогось, що називається "Стандартний" стиль.
Даніель Янковський

Без крапки з комою - це не дуже гарна ідея. Це порушить деяке мінімізацію.
денів

Цей standardпакет не любить крапки з комою. Якщо вам подобаються крапки з комою, є напівстандарт
yesnik

10

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


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, але я б не підозрював цього.


ОП попросили керівництва по стилю. Не якась конкретна порада.
mightyiam

@mightyiam Щоправда, але правила відступу є частиною майже кожного посібника зі стилів. Можливо, мій погляд може допомогти ОП оцінити деякі довідники стилів, які інші пов'язуватимуть, або допомогти йому розробити власний посібник зі стилів.
Даніель Янковський



2

Для кави-сценарію, де погані відступи означають помилки компіляції

використання

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

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

Редагувати:

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.