npm-coding-style npm's "funny" coding style

DESCRIPTION

npm的编码风格有点非常规. 出于差异的考虑,它并没有什么不同,而是精心设计的样式,旨在减少视觉混乱并使错误更明显.

如果您想为npm做出贡献(这是非常受鼓励的),则应使您的代码符合npm的样式.

注意:这涉及npm的代码,而不是您可以从npm注册表中下载的特定软件包.

Line Length

保持少于80个字符的行. 线太短总比线长好. 将长列表,对象和其他语句分成多行.

Indentation

两个空间. 选项卡更好,但是在Web浏览器(和GitHub)上它们看起来像地狱,节点使用2个空格,仅此而已.

适当配置您的编辑器.

Curly braces

大括号与需要大括号的东西在同一行.

Bad:

function ()
{

Good:

function () {

如果一个块需要换行到下一行,请使用花括号. 如果没有,请不要使用它.

Bad:

if (foo) { bar() }
while (foo)
  bar()

Good:

if (foo) bar()
while (foo) {
  bar()
}

Semicolons

除以下四种情况外,请勿使用它们:

良好使用分号的一些示例:

;(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()
}

请注意,带有-+起始行也应以分号作为前缀,但这很少见.

Comma First

如果存在一个用逗号分隔的事物列表,并且它包含多行,请将逗号放在下一行的开始处,直接在启动该列表的标记的下面. 将最终令牌本身放在列表中. 例如:

var magicWords = [ 'abracadabra'
                 , 'gesundheit'
                 , 'ventrilo'
                 ]
  , spells = { 'fireball' : function () { setOnFire() }
             , 'water' : function () { putOut() }
             }
  , a = 1
  , b = 'abc'
  , etc
  , somethingElse

Quotes

除避免转义外,对字符串使用单引号.

Bad:

var notOk = "Just double quotes"

Good:

var ok = 'String contains "double" quotes'
var alsoOk = "String contains 'single' quotes or apostrophe"

Whitespace

(用于函数调用以外的其他任何内容.)之前,请在(之前放置一个空格.请在任何使内容更易读的位置使用一个空格.

行尾不要留尾随空格. 不要缩进空行. 不要使用过多的空格.

Functions

使用命名函数. 它们使堆栈跟踪更易于阅读.

Callbacks, Sync/async Style

尽可能使用异步/非阻塞版本的事物. 对于npm来说,使用同步fs API可能更有意义,但是通过这种方式,fs和http和子进程都使用相同的回调传递方法.

回调应始终是列表中的最后一个参数. 它的第一个参数是Error或null.

要非常小心,永远不要扔东西. 比没用还糟. 只需将错误消息作为第一个参数发送回回调即可.

Errors

始终用您的消息创建一个新的Error对象. 不要只将字符串消息返回到回调. 堆栈跟踪很方便.

Logging

记录是使用npmlog实用程序完成的.

当它们不再有用时,请清理它们. 特别是,一遍又一遍地记录同一对象没有帮助. 日志应报告正在发生的事情,以便更轻松地查找故障发生的位置.

使用适当的日志级别. 请参阅npm-config并搜索" loglevel".

Case, naming, etc.

当多字标识符引用对象,函数,方法,属性或本节未指定的任何东西时,请使用lowerCamelCase作为多字标识符.

使用UpperCamelCase作为类名(您将传递给" new"的东西).

all-lower-hyphen-css-case用于多字文件名和配置键.

使用命名函数. 它们使堆栈跟踪更容易理解.

CAPS_SNAKE_CASE用作常量,这些常量永远不会更改并且很少使用.

对于函数名称,请使用单个大写字母,其中该函数通常是匿名的,但需要以递归方式对其进行调用. 很明显,它是一个"一次性"功能.

null, undefined, false, 0

布尔变量和函数应始终为truefalse . 除非将其设置为数字,否则请勿将其设置为0.

如果有意丢失或删除某些东西,请将其设置为null .

不要将事情设置为undefined . 将该值保留为"尚未设置任何内容".

布尔对象是禁止的.

SEE ALSO


by  ICOPY.SITE