描述
npm的代码格式有点不循常规。不是为了不同而不同的缘故,而是精心设计的风格,为了减少视觉上的混乱和bugs更明显。
如果想要给npm贡献(很鼓励这样),应该让你的代码遵循npm's的风格。
注意:这意味到你从npm registry下载的npm的代码不是特定的包
代码长度
保证一行少于80字符。短行比长行更好。将长lists, objects,和其他语句分成多行。
缩进
两个空格。Tabs更好,但是在web浏览器和GitHub上看起来像地狱,并且node使用2个空格,所以就用2个空格咯
大括号
好的方式:
// bad
function ()
{
// good
function () {
如果一块代码需要在下一行,使用大括号。如果不需要就不要用。
// bad
if (foo) {bar()}
while (foo)
bar()
// good
if (foo) bar()
while (foo) {
bar()
}
分号
除了以下四种情况,不要使用:
-
for(;;)
循环,因为是必须的 - 空循环比如:
while(something);
(但是最好你有一个好理由需要什么做) - ``case 'foo': doSomething();break
- 以
(
或者[
开始的行。这可以防止表达式被解释为一个函数调用或属性访问,分别地。
一些使用分好的好例子:
;(x || y).doSomething()
;[a, b, c].forEach(doSomething)
for (var i = 0; i < 10; i ++) {
switch (state) {
case 'begin': start(); continue
case 'end': finish(); break
default: throw new Error('unknown state')
}
end()
}
注意以-
和+
开始的行也应该以分号开始,但这不常见。
逗号开始
如果一些things被逗号分开,并且是多行,将逗号放在下一行的开始。将list的最后token作为一行。比如:
var magicWords = [ 'abracadabra'
, 'gesundheit'
, 'ventrilo' ]
, spells = { 'fireball' : function () { setOnFire() }
, 'water' : function () { putOut() } }
, a = 1
, b = 'abc'
, etc
, somethingElse
引号
使用单引号声明字符串,避免转义
// bad
var notOk = "Just double quotes"
// good
var ok = 'String contains "double" quotes'
var alsoOk = "String contains 'single' quotes or apostrophe"
空格
除了方法调用,在所有的(
前放一个空格。同时一个空格让代码更可读。
不要在一行的结尾留一个空格。不要在空行缩进。不要使用太多的空格。
方法
使用命名functions,他们让堆栈给容易阅读。
回调,异步/同步风格
尽可能使用异步/非阻塞的方式。对于npm使用同步fs APIs可能更有意义,但是这样,fs和http和子进程这些都是用相同的回调-传递方法
回调应该总是最后一个参数,它的第一个参数是Error或者null
小心永远不要throw anything.它比不用更坏。将错误信息作为错误消息返回给回调。
Errors
总是创建一个新Error object返回信息。不要只是返回string message到callback.堆栈跟踪很有用。
日志
日志通过使用npmlog工具。
请清理掉没有用的日志。特别是,一遍又一遍的记录相同的日志并没有什么用。日志应该记录发生了什么,所以更容易的跟踪哪里发生了错误。
使用合适的日志等级。查看npm-config并且搜寻"loglevel"
大小写,命名 等等
使用小驼峰命名对象、函数、方法、属性或者任何这里没有说明的。
为类名使用大驼峰命名
使用全小写用-
连接的(all-lower-hyphen-css-case)多个单词命名文件名和config keys.
使用命名式函数。让跟踪堆栈更容易
使用大写下划线连接的方式命名常量。
为匿名函数,但需要递归调用自己的使用一个大写字母命名。表明它是一个"throwaway"方法
null,undefined,false,0
Boolean的变量和方法应该总是true
或者false
.不要将它设置为0,除非期望得到一个数字。
当故意丢失或删除的,设置为null。
不要赋值为undefined. 预留的值以为着:“啥也没设置”
Boolean对象是禁止的。
了解更多