npm 代码格式

描述

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对象是禁止的。

了解更多

  • npm-developers
  • npm-faq
  • npm

你可能感兴趣的:(npm 代码格式)