node.js 应用程序的编码风格指南?

137

是否有(或多个)适用于node.js的编码风格指南?如果没有,最流行的开源node项目使用哪些新兴的样式?

我在寻找一些类似于Python规范化编码风格指南PEP 8的指南(或几个指南)。我看过一些不值得链接的各种JavaScript指南(大多数是面向客户端JavaScript的旧指南)。我发现了一个有趣的node.js风格指南

编码风格指南或编程约定应包括(但不限于):

  • 代码布局:缩进(2个空格、4个空格、制表符等)、换行符、断行等。
  • 空格,如“function (arg)”与“function(arg)”之间的区别。
  • 是否使用分号,var声明等。
  • 命名方式,如do_this() vs. doThis(),var_name vs. varName等。
  • node.js和JavaScript习语,如== vs. ===,回调函数的第一个参数是错误对象等。
  • 注释和文档
  • 附带工具,例如lint checker、单元测试框架等。

显然,这个话题是高度主观的,但我认为在成熟过程中,建立共同和广泛接受的编码风格是社区迈出的重要一步。此外,这并不仅仅是口感问题。特别是像“使用===而不是==”这样的规则直接影响代码质量。


我猜这真的取决于你使用的“框架”(如果有的话),例如,你可以查看http://spludo.com/source/coding-standards/,但其他人可能会考虑稍微不同的方法。 - Poelinca Dorin
4
“有没有好的样式指南”可能是主观的,但“新兴的样式是什么”肯定是主观的。你已经找到了Felix的指南,当然我在某些方面不同意他的看法(有时候非常不同意),在其他方面我则持有相同的看法。这就是问题所在。很快就会出现:“不,我看到新兴的样式使用制表符!”“不,我看到新兴的样式使用四个空格!”“不,我看到新兴的样式使用两个空格!” 当然,人们真正想说的是“我喜欢的样式”,而不是“我看到新兴的样式”。 - T.J. Crowder
2
@T.J. Croweder,我看到的风格没有使用空格! - Raynos
+1 很棒的问题。我希望早些时候就有这些链接了。 - Bryan Downing
冒着自相矛盾的风险,我可以看出目前被接受的(以及当前得票最高的)答案从主题角度来看实际上存在问题。也许这与提问的方式有关,而不是主题(样式指南/编码风格)?或者也许不是?“不要使用!此标签涉及完全基于个人意见的主题,因此不再属于主题范围。遵循编码风格和约定的问题。”- https://stackoverflow.com/tags/coding-style/info。| https://stackoverflow.com/tags/coding-style/synonyms - Henke
显示剩余2条评论
7个回答

123

我会审核由JSLint检查的编码规范,或查看NPM作者(Isaac Shlueter)的编码规范

您还可以查看着名的Node.JS编程人员使用的样式:

我会把我的放进去以作为参考 ;)

编辑:来自@alienhard的建议:

我认为有几个黄金规则需要遵循:

  • 永远不要使用witheval
  • 使用===代替==
  • 在适当的作用域中始终使用var声明变量 - 不要回退到全局作用域
  • 如果您计划发布在服务器端和浏览器中运行的代码,请将您的应用程序封装在一个闭包(function(){})()
  • 回调函数应该将err作为第一个参数,如果它们本身接受回调函数作为参数,则应将其放在最后,例如:callback(err, param1, param2, callback)

缩进、大括号和关键字之间的空格以及分号的放置都是个人喜好。


2
谢谢你的回答。我在想为什么你没有提到Ryan ;),但是我从官方的node repo wiki上发现,他们遵循Google的JavaScript风格指南。我之前不知道这个... - alienhard

21

1
我不知道为什么这只有3个赞... - Luc
5
也许是因为“不用分号”的规则。对于被称为“标准”风格的东西来说,这似乎是一个奇怪的选择。 - Daniel Yankowsky
没有分号不是一个好主意,因为它会破坏一些代码压缩。 - denov
1
这个“标准”包不喜欢分号。如果你喜欢分号,可以使用semistandard - yesnik

10
你可以从面向客户端的JavaScript指南中学到很多好的编码风格实践(大部分也适用于node.js,因为客户端和服务器端的区别主要在于库而不是语言本身)。例如,JavaScript Patterns一书专门讲解了第2章的相关内容。此外,道格拉斯·克罗克福德的网站书籍视频都是必看的材料,以便采用JavaScript特定的编码风格和最佳实践。

3
对于道格拉斯·克罗克福德的著作《JavaScript: The Good Parts》表示赞赏,这本书内容丰富紧凑,阅读起来可能会有些费劲,但是是我读过的最好的书籍之一。+1 - Alex KeySmith

7

在终端中使用node时,使用空格缩进有助于您的源代码变得更易读。否则,“错误之处”的光标将无法对齐。

使用制表符:

        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要求一个风格指南,而不是一些具体的提示。 - Shahar 'Dawn' Or
@mightyiam 是的,但缩进规则几乎是每个样式指南的一部分。也许我的观点可以帮助 OP 评估其他人将链接的一些样式指南,或者可以帮助他制定自己的样式指南。 - Daniel Yankowsky

6

我问这个问题已经有一段时间了... 在这期间,我发现了这篇优秀的JavaScript指南:

编写一致且符合习惯的JavaScript原则

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


5

2
对于 Coffee-Script,错误的缩进会导致编译错误。
使用:
:set tabstop=2
:set shiftwidth=2
:set expandtab

流行的咖啡项目 zombie, brunch 采用这种缩进设置。

编辑:

实际上,只需使用这个!https://github.com/paulmillr/code-style-guides(brunch 的主要贡献者之一)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接