天天看點

一些達成共識的JavaScript編碼風格約定

<a target="_blank"></a>

縮進

兩個空格,無需更長的縮進,無需tab縮進:google、npm、node.js、idiomatic

tab縮進:jquery

4個空格:crockford

參數和表達式之間的空格

使用緊湊型風格:google、npm、node.js

project.myclass = function(arg1, arg2) {

過多地使用空格:idiomatic, jquery

for ( i = 0; i &lt; length; i++ ) {

沒有發表意見:crockford

大部分指南中,都提醒開發者不要在語句結尾處有任何的空格。

代碼行長度

最多80個字元:google、npm、node.js、crockford(當在代碼塊中,除了2個空格外的其他縮進允許将函數參數與首個函數參數的位置對齊。另一種選擇是當自動換行時使用4個空格縮進,而不是2個。)

沒有發表意見:jquery、idiomatic

分号

始終使用分号,不依賴于隐式插入:google、node.js、crockford

在某些情況下不要使用expect:npm

注釋

遵循jsdoc約定:google、idiomatic

沒有發表意見:npm、node.js、jquery、crockford

引号

推薦單引号:google、node.js

雙引号:jquery

沒有發表意見:npm、idiomatic、crockford

變量聲明

一次聲明一個,不使用逗号:node.js

var foo = ''; var bar = '';

一次聲明多個,在行結束處使用逗号分隔:idiomatic、jquery

var foo = "",   bar = "",   quux;

在行開始處使用逗号:npm

沒有發表意見:google、crockford

大括号

在同一行使用左大括号:google、npm、node.js、idiomatic、 jquery、crockford

function thisisblock(){

npm指南中指出,隻在代碼塊需要包含下一行時使用大括号,否則不使用。

全局變量

不要使用全局變量:google、crockford(谷歌表示,全局變量命名沖突難以調試,并可能在兩個項目進行正整合時出現一些棘手的問題。為了便于共享公用的javascript代碼,需要制定公約來避免沖突發生。crockford認為不應該使用隐式全局變量。)

沒有發表意見:idiomatic、jquery、npm、node.js

變量命名

開始的第一個單詞小寫,之後的所有單詞首字母大寫:google、npm、node.js、idiomatic

var foo = ""; var fooname = "";

常量命名

使用大寫字母:google、npm、node.js

var cons = 'value';

沒有發表意見:jquery、idiomatic、crockford

函數命名

開始的第一個單詞小寫,之後的所有單詞首字母大寫(駝峰式):google、npm、idiomatic、node.js(推薦使用長的、具描述性的函數名)

function verylongoperationname function short()..

     關鍵字形式的函數命名:

function isready() function setname() function getname()

沒有發表意見:jquery、crockford

陣列命名

使用複數形式:idiomatic 

var documents = [];

沒有發表意見:google、jquery、npm、node.js、crockford

對象和類命名

使用如下形式:google、npm、node.js

var thisisobject = new date;

其他命名

針對長檔案名和配置鍵使用all-lower-hyphen-css-case形式:npm

下面根據本文上面每個分類下的第一種風格來建立一個.jshintrc檔案。你可以将它放到項目中根目錄中,jshint-avare代碼編輯器将會按照它來統一項目中的所有代碼風格。

{   "camelcase" : true,   "indent": 2,   "undef": true,   "quotmark": single,   "maxlen": 80,   "trailing": true,   "curly": true }

此外,你應該将下面的頭添加到你的javascript檔案中。

/* jshint browser:true, jquery:true */

在node.js檔案中你應該添加:

/*jshint node:true */

還可以在各種javascript檔案中添加下面的聲明:

'use strict';

這将影響jshint和你的javascript引擎,可能不那麼相容,但是javascript将會運作得更快。

如果你想確定所有的js代碼與.jshintrc中定義的風格保持一緻,你可以将下面的内容添加到你的.git/hooks/pre-commit檔案中,當你試圖送出任何新修改的檔案到項目時會自動執行風格檢查。

#!/bin/bash # pre-commit git hook to run jshint on javascript files. # # if you absolutely must commit without testing, # use: git commit --no-verify filenames=($(git diff --cached --name-only head)) which jshint &amp;&gt; /dev/null if [ $? -ne 0 ]; then   echo "error: jshint not found"   echo "install with: sudo npm install -g jshint"   exit 1 fi for i in "${filenames[@]}" do     if [[ $i =~ \.js$ ]];     then         echo jshint $i         jshint $i         if [ $? -ne 0 ];         then             exit 1         fi     fi done

最後祝大家編碼愉快!

原文釋出時間為:2013-07-12

本文來自雲栖社群合作夥伴“linux中國”