npm 代碼格式

描述

npm的代碼格式有點(diǎn)不循常規(guī)过蹂。不是為了不同而不同的緣故聚至,而是精心設(shè)計(jì)的風(fēng)格,為了減少視覺上的混亂和bugs更明顯鸥印。

如果想要給npm貢獻(xiàn)(很鼓勵(lì)這樣)坦报,應(yīng)該讓你的代碼遵循npm's的風(fēng)格狂鞋。

注意:這意味到你從npm registry下載的npm的代碼不是特定的包

代碼長(zhǎng)度

保證一行少于80字符骚揍。短行比長(zhǎng)行更好。將長(zhǎng)lists, objects,和其他語(yǔ)句分成多行信不。

縮進(jìn)

兩個(gè)空格抽活。Tabs更好,但是在web瀏覽器和GitHub上看起來(lái)像地獄下硕,并且node使用2個(gè)空格,所以就用2個(gè)空格咯

大括號(hào)

好的方式:

// bad
function ()
{

// good
function () {

如果一塊代碼需要在下一行霜幼,使用大括號(hào)罪既。如果不需要就不要用。

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

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

分號(hào)

除了以下四種情況琢感,不要使用:

  • for(;;)循環(huán)猩谊,因?yàn)槭潜仨毜?/li>
  • 空循環(huán)比如:while(something);(但是最好你有一個(gè)好理由需要什么做)
  • ``case 'foo': doSomething();break
  • (或者[開始的行。這可以防止表達(dá)式被解釋為一個(gè)函數(shù)調(diào)用或?qū)傩栽L問,分別地墙牌。

一些使用分好的好例子:

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

注意以-+開始的行也應(yīng)該以分號(hào)開始暗甥,但這不常見。

逗號(hào)開始

如果一些things被逗號(hào)分開虽风,并且是多行寄月,將逗號(hào)放在下一行的開始。將list的最后token作為一行厂抖。比如:

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

引號(hào)

使用單引號(hào)聲明字符串克懊,避免轉(zhuǎn)義

// bad
var notOk = "Just double quotes"

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

空格

除了方法調(diào)用谭溉,在所有的(前放一個(gè)空格。同時(shí)一個(gè)空格讓代碼更可讀扮念。

不要在一行的結(jié)尾留一個(gè)空格。不要在空行縮進(jìn)场躯。不要使用太多的空格。

方法

使用命名functions伞鲫,他們讓堆棧給容易閱讀签舞。

回調(diào)儒搭,異步/同步風(fēng)格

盡可能使用異步/非阻塞的方式。對(duì)于npm使用同步fs APIs可能更有意義搂鲫,但是這樣魂仍,fs和http和子進(jìn)程這些都是用相同的回調(diào)-傳遞方法

回調(diào)應(yīng)該總是最后一個(gè)參數(shù),它的第一個(gè)參數(shù)是Error或者null

小心永遠(yuǎn)不要throw anything.它比不用更壞擦酌。將錯(cuò)誤信息作為錯(cuò)誤消息返回給回調(diào)。

Errors

總是創(chuàng)建一個(gè)新Error object返回信息睁搭。不要只是返回string message到callback.堆棧跟蹤很有用笼平。

日志

日志通過使用npmlog工具出吹。

請(qǐng)清理掉沒有用的日志辙喂。特別是,一遍又一遍的記錄相同的日志并沒有什么用秋麸。日志應(yīng)該記錄發(fā)生了什么炬太,所以更容易的跟蹤哪里發(fā)生了錯(cuò)誤。

使用合適的日志等級(jí)炒考。查看npm-config并且搜尋"loglevel"

大小寫,命名 等等

使用小駝峰命名對(duì)象斋枢、函數(shù)、方法瓤帚、屬性或者任何這里沒有說(shuō)明的描姚。

為類名使用大駝峰命名

使用全小寫用-連接的(all-lower-hyphen-css-case)多個(gè)單詞命名文件名和config keys.

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

使用大寫下劃線連接的方式命名常量戈次。

為匿名函數(shù)轩勘,但需要遞歸調(diào)用自己的使用一個(gè)大寫字母命名。表明它是一個(gè)"throwaway"方法

null,undefined,false,0

Boolean的變量和方法應(yīng)該總是true或者false.不要將它設(shè)置為0怯邪,除非期望得到一個(gè)數(shù)字绊寻。

當(dāng)故意丟失或刪除的,設(shè)置為null悬秉。

不要賦值為undefined. 預(yù)留的值以為著:“啥也沒設(shè)置”

Boolean對(duì)象是禁止的榛斯。

了解更多

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市驮俗,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌允跑,老刑警劉巖王凑,帶你破解...
    沈念sama閱讀 216,843評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異聋丝,居然都是意外死亡索烹,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,538評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門弱睦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)百姓,“玉大人,你說(shuō)我怎么就攤上這事况木±萋#” “怎么了?”我有些...
    開封第一講書人閱讀 163,187評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵火惊,是天一觀的道長(zhǎng)求类。 經(jīng)常有香客問我,道長(zhǎng)屹耐,這世上最難降的妖魔是什么尸疆? 我笑而不...
    開封第一講書人閱讀 58,264評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上寿弱,老公的妹妹穿的比我還像新娘犯眠。我一直安慰自己,他們只是感情好症革,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,289評(píng)論 6 390
  • 文/花漫 我一把揭開白布阔逼。 她就那樣靜靜地躺著,像睡著了一般地沮。 火紅的嫁衣襯著肌膚如雪嗜浮。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,231評(píng)論 1 299
  • 那天摩疑,我揣著相機(jī)與錄音危融,去河邊找鬼。 笑死雷袋,一個(gè)胖子當(dāng)著我的面吹牛吉殃,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播楷怒,決...
    沈念sama閱讀 40,116評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼蛋勺,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了鸠删?” 一聲冷哼從身側(cè)響起抱完,我...
    開封第一講書人閱讀 38,945評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎刃泡,沒想到半個(gè)月后巧娱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,367評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡烘贴,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,581評(píng)論 2 333
  • 正文 我和宋清朗相戀三年禁添,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片桨踪。...
    茶點(diǎn)故事閱讀 39,754評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡老翘,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出锻离,到底是詐尸還是另有隱情铺峭,我是刑警寧澤,帶...
    沈念sama閱讀 35,458評(píng)論 5 344
  • 正文 年R本政府宣布纳账,位于F島的核電站逛薇,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏疏虫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,068評(píng)論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望卧秘。 院中可真熱鬧呢袱,春花似錦、人聲如沸翅敌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,692評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)蚯涮。三九已至治专,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間遭顶,已是汗流浹背张峰。 一陣腳步聲響...
    開封第一講書人閱讀 32,842評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留棒旗,地道東北人喘批。 一個(gè)月前我還...
    沈念sama閱讀 47,797評(píng)論 2 369
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像铣揉,于是被迫代替她去往敵國(guó)和親饶深。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,654評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,085評(píng)論 25 707
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法逛拱,類相關(guān)的語(yǔ)法敌厘,內(nèi)部類的語(yǔ)法,繼承相關(guān)的語(yǔ)法朽合,異常的語(yǔ)法额湘,線程的語(yǔ)...
    子非魚_t_閱讀 31,625評(píng)論 18 399
  • 來(lái)源與:阿里云棲 禁止用于商業(yè)用途 ps:如果需要電子書 評(píng)論你們郵箱 我會(huì)發(fā)給你們 下面感覺還是有點(diǎn)亂 目錄 一...
    小向資源網(wǎng)閱讀 7,585評(píng)論 0 12
  • 原文地址 前言 因?yàn)槠綍r(shí)在寫代碼的過程中锋华,有些算法會(huì)經(jīng)常重復(fù)寫,比如數(shù)組去重箭窜、數(shù)組抽取隨機(jī)值等毯焕!雖然這些不是很難的...
    豌豆突突突閱讀 1,098評(píng)論 0 0
  • 今天由于某件事(大概是我工作態(tài)度的事),我們持不同想法磺樱,他在勸說(shuō)我半天我仍然不改不聽的情況下纳猫,他。竹捉。居然芜辕。。拿著块差。...
    孫小本同學(xué)閱讀 368評(píng)論 0 1