npm 編碼風(fēng)格

2021-10-29 10:53 更新

描述

npm 的編碼風(fēng)格有點(diǎn)不合常規(guī)。它并沒有因?yàn)椴町惗煌且环N精心設(shè)計(jì)的風(fēng)格,旨在減少視覺混亂并使錯(cuò)誤更加明顯。

如果你想為 npm 做出貢獻(xiàn)(這是非常受鼓勵(lì)的),你應(yīng)該讓你的代碼符合 npm 的風(fēng)格。

注意: 這涉及 npm 的代碼,而不是你可以從 npm 注冊(cè)表下載的特定包。

線長(zhǎng)

保持行短于 80 個(gè)字符。

一行代碼內(nèi)容短一些總比一長(zhǎng)串的代碼要來得好。將長(zhǎng)列表、對(duì)象和其他語句分解為多行。

縮進(jìn)

兩個(gè)空格。 Tab 縮進(jìn)更好,但它們?cè)?Web 瀏覽器(和 GitHub 上)中看起來特別的不好,節(jié)點(diǎn)用 2 個(gè)空格,就是這樣。 應(yīng)該適當(dāng)?shù)嘏渲媚愕木庉嬈鳌?/p>

大括號(hào)

大括號(hào)與需要它們的內(nèi)容在同一行。 不好:

function()
{

好的:

function(){

如果塊需要換到下一行,請(qǐng)使用花括號(hào)。如果沒有,請(qǐng)不要使用它。 壞的:

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

好的:

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

分號(hào)

除了以下的四種情況之外,就不要使用它們:

  • for(;;) 循環(huán) 它們實(shí)際上時(shí)必須的。
  • 類似while(something);的空循環(huán) 但你最好有一個(gè)為什么要這么做的理由。
  • case 'foo':doSomethin();break
  • 在領(lǐng)先的前([在該行的開始。這可以防止表達(dá)式分別被誤解為函數(shù)調(diào)用或?qū)傩栽L問。

一些良好的分號(hào)用法示例:

;(x || y).doSomethin()
;[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()
}

請(qǐng)注意,以-and開頭的行+也應(yīng)該以分號(hào)為前綴,但這種情況不太常見。

逗號(hào)優(yōu)先

如果有一個(gè)由逗號(hào)分隔的事物列表,并且它包含在多行中,請(qǐng)將逗號(hào)放在下一行的開頭,直接在開始列表的標(biāo)記下方。將列表中的最后一個(gè)標(biāo)記單獨(dú)放在一行上。例如:

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

引號(hào)

對(duì)字符串使用單引號(hào),除非避免轉(zhuǎn)義。 壞的:

var notOk = "Just double quotes"

好的:

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

空白

(函數(shù)調(diào)用之外的任何內(nèi)容前面放置一個(gè)空格。也可以在任何使事情更具可讀性的地方使用單個(gè)空格。

不要在行尾留下尾隨空格。不要縮進(jìn)空行。不要使用多余的空格。

函數(shù)

使用命名函數(shù)。它們使堆棧跟蹤更易于閱讀。

回調(diào),同步/異步樣式

盡可能使用異步/非阻塞版本的事物。npm 使用同步 fs API 可能更有意義,但是這樣,fs 和 http 以及子進(jìn)程都使用相同的回調(diào)傳遞方法。

回調(diào)應(yīng)該始終是列表中的最后一個(gè)參數(shù)。它的第一個(gè)參數(shù)是 Error 或 null。

要非常小心,永遠(yuǎn)不要扔任何東西。這比沒用更糟糕。只需將錯(cuò)誤消息作為回調(diào)的第一個(gè)參數(shù)發(fā)送回即可。

錯(cuò)誤

始終使用您的消息創(chuàng)建一個(gè)新的 Error 對(duì)象。不要只是向回調(diào)返回一個(gè)字符串消息。堆棧跟蹤很方便。

日志記錄

日志記錄是使用[npm-config]()實(shí)用程序完成的。

當(dāng)日志不再有用時(shí),請(qǐng)清理日志。特別是,一遍又一遍地記錄同一個(gè)對(duì)象是沒有幫助的。日志應(yīng)該報(bào)告正在發(fā)生的事情,以便更容易地跟蹤故障發(fā)生的位置。

使用適當(dāng)?shù)娜罩炯?jí)別。查看 npm-config 并搜索 "loglevel"。

案例、命名等

使用使用lowerCamelCase時(shí),他們指的對(duì)象,函數(shù),方法,屬性,或者在本節(jié)中未指定任何東西多字的標(biāo)識(shí)符。

使用UpperCamelCase的類名(的東西,你會(huì)傳遞到“新”)。

使用all-lower-hyphen-css-case對(duì)多字的文件名和配置鍵。

使用命名函數(shù)。它們使堆棧跟蹤更容易跟蹤。

使用CAPS_SNAKE_CASE常量,事情應(yīng)該不會(huì)改變,并且很少使用。

函數(shù)名使用單個(gè)大寫字母,函數(shù)通常是匿名的,但需要遞歸調(diào)用自身。它清楚地表明這是一個(gè)“一次性”功能。

空、未定義、假、0

布爾變量和函數(shù)應(yīng)始終為true或?false。不要將它設(shè)置為 0,除非它應(yīng)該是一個(gè)數(shù)字。

當(dāng)故意丟失或刪除某些內(nèi)容時(shí),請(qǐng)將其設(shè)置為null。

不要將事情設(shè)置為undefined.?保留該值以表示“尚未設(shè)置為任何內(nèi)容”。

禁止使用布爾對(duì)象。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)