NPM-编码风格
NPM-编码风格
npm的“搞笑”编码风格
描述
npm的编码风格有点不同寻常。它不同于差异,而是一种精心设计的风格,旨在减少视觉混乱,使错误更明显。
如果你想贡献npm(非常鼓励),你应该让你的代码符合npm的风格。
注意:这涉及npm的代码,而不是您可以从npm注册表下载的特定软件包。
线长
保持行短于80个字符。线条太短而不是太长会更好。将长列表,对象和其他语句分成多行。
缩进
双空格。标签更好,但它们在Web浏览器(和GitHub)中看起来像地狱,节点使用2个空格,所以就是这样。
适当配置您的编辑器。
大括号
大括号与需要它们的东西属于同一条线。
坏:
function ()
{
好:
function () {
如果块需要换行到下一行,请使用大括号。如果没有,请不要使用它。
坏:
if (foo) { bar() }
while (foo)
bar()
好:
if (foo) bar()
while (foo) {
bar()
}
分号
除四种情况外,不要使用它们:
for (;;)
循环。他们实际上是必需的。
一些良好的分号用法示例:
;(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()
}
请注意,起始行有-
和+
也应该以分号为前缀,但这不太常见。
逗号第一
如果有一个以逗号分隔的事物列表,并且它包含多行,则将逗号放在下一行的开头,直接位于启动列表的令牌下方。将最终标记单独放在一行中。例如:
var magicWords = [ 'abracadabra'
, 'gesundheit'
, 'ventrilo'
]
, spells = { 'fireball' : function () { setOnFire() }
, 'water' : function () { putOut() }
}
, a = 1
, b = 'abc'
, etc
, somethingElse
行情
对字符串使用单引号,以避免转义。
坏:
var notOk = "Just double quotes"
好:
var ok = 'String contains "double" quotes'
var alsoOk = "String contains 'single' quotes or apostrophe"
空白
在(
函数调用之外放置一个空格。在任何可以使事物更具可读性的地方使用单个空格。
不要在行尾留下尾随空格。不要缩进空行。不要使用比有用更多的空间。
功能
使用命名函数。它们使堆栈跟踪更容易阅读。
回调,同步/异步风格
尽可能使用异步/非阻塞版本的东西。npm使用同步fs API可能更有意义,但这样,fs和http以及子进程的东西都使用相同的回调传递方法。
回调应该始终是列表中的最后一个参数。它的第一个参数是Error或null。
要小心,永远不要扔任何东西。它比没用更糟糕。只需将错误消息作为第一个参数发送回回调。
错误
始终使用您的消息创建一个新的Error对象。不要只是将字符串消息返回给回调。堆栈跟踪很方便。
记录
使用npmlog
实用程序完成日志记录。
请在日志不再有用时清理日志。特别是,一遍又一遍地记录同一个对象是没有用的。日志应报告正在发生的事情,以便更容易追踪故障发生的位置。
使用适当的日志级别。查看npm-config
并搜索 “ loglevel ”。
案例,命名等
使用lowerCamelCase
时,他们指的对象,函数,方法,属性,或者在本节中未指定任何东西多字的标识符。
使用UpperCamelCase
的类名(的东西,你会传递到“新”)。
使用all-lower-hyphen-css-case
对多字的文件名和配置键。
使用命名函数。它们使堆栈跟踪更容易遵循。
使用CAPS_SNAKE_CASE
常量,事情应该不会改变,并且很少使用。
对函数名称使用单个大写字母,其中函数通常是匿名的,但需要递归调用自身。它清楚地表明它是一个“一次性”的功能。
null,undefined,false,0
布尔变量和函数应始终为true
或 false
。除非它应该是一个数字,否则不要将其设置为0。
当故意丢失或删除某些内容时,请将其设置为null
。
不要把事情搞定undefined
。保留该值意味着“尚未设置为任何东西”。
禁止使用布尔对象。