編碼風格

編碼風格 Sublime Text 設置 perfernces > Settings - User

# 空格縮進
使用2個空格而不是 tab 來進行代碼縮進,同時絕對不要混用空格和 tab 。
"tab_size": 2,// Tab鍵製表符寬度爲2空格
"translate_tabs_to_spaces": true, // // 代碼 tab 對齊轉換爲空格對齊

# 換行
使用 UNIX 風格的換行符 (\n),同時在每一個文件的結尾添加一個換行符。 Windows 風格的換行符 (\r\n) 是絕對禁止出如今任何項目中的。
"default_line_ending": "unix",

# 去除行末尾的多餘空格
"trim_trailing_white_space_on_save": true

# 每行80個字符
限制你每行代碼不超過80個字符。儘管如今的顯示器愈來愈大,可是你的大腦並無變大,而且你還能夠把你的大顯示器切分紅多屏( view > Layout > Columns 2 )來顯示。

# 使用單引號
除非編寫.json文件,其餘時候都請用單引號包裹 '字符串' 。
var foo = 'bar';

# 使用分號
是否使用分號,在社區爭論已久。可是,當能夠用廉價的語法來消除一些可能引入的錯誤的時候,請當一個保守派。

# 大括號位置
請把你的全部的左大括號都放在語句開始的這一行、請務必在條件判斷先後都添加一個空格。
if (true) {
  console.log('winning');
}

# 每一個變量聲明都帶一個 var
每一個變量聲明都帶一個 var ,這樣刪除或者調整變量聲明的順序會更加容易。 不要把變量都聲明在最前面,而是聲明在它最有意義的地方。
var keys   = ['foo', 'bar'];
var values = [23, 42];

var object = {};
while (items.length) {
  var key = keys.pop();
  object[key] = values.pop();
}

# 變量、屬性和函數名都採用小駝峯
變量、屬性和函數的命名風格都須要遵循小駝峯風格。
同時全部的命名都是有意義的。
儘可能避免用單字符變量和少見單詞來命名。
var adminUser = db.query('SELECT * FROM users ...');

# 類名採用大駝峯
類名都採用大駝峯風格來命名。
function BankAccount() {
}

# 用大寫來標識常量
常量變量和對象的靜態常量屬性都須要特殊代表,經過所有大寫的方式來代表。
const SECOND = 1 * 1000;

function File() {
}
File.FULL_PERMISSIONS = 0777;

# 對象、數組的建立
使用尾隨逗號,儘可能用一行來聲明。
只有在編譯器不接受的狀況下才把對象的 key 用單引號包裹。 
使用字面表達式,用 {}, [] 代替 new Array, new Object。
var a = ['hello', 'world'];
var b = {
  good: 'code',
  'is generally': 'pretty',
};

# 使用 === 比較符
使用 === 操做符來進行比較操做,它會徹底按照你的指望來執行。
寫代碼並非在背那些 stupid rules 
var a = 0;
if (a === '') {
  console.log('winning');
}

# 三元操做符分多行
三元操做符不該該寫在一行,將它分割到多行。
var foo = (a === b) 
    ? 1
    : 2;

# 不要擴展內建類型
不要擴展 javascript 內建對象的方法。未來的你會感謝你這個作法的。
Array.prototype.empty = function(){
    return !this.length;
}
var a = [];
if (a.empty()) {
    console.log('losing');
}
// Right
var a = [];
if (!a.length) {
    console.log('winning');
}

# 使用有意義的判斷條件
全部複雜的條件判斷都須要賦予一個有意義的名字或方法
var isValidPassword = password.length >= 4 && /^(?=.*\d).{4,}$/.test(password);

if (isValidPassword) {
  console.log('winning');
}

# 寫精簡的函數
保持你的函數儘量的精簡。 
一個好的函數應該可以在幻燈片上、一屏顯示,而且讓坐在教室最後一排的人看清楚。
別再去數你的每個函數並控制在15行之內了。

# 儘早的從函數中返回
爲了不深刻嵌套的 if 語句,請儘早的從函數中返回。
// Wrong
function isPercentage(val) {
  if (val >= 0) {
    if (val < 100) {
      return true;
    } else {
      return false;
    }
  } else {
    return false;
  }
}
// Right
function isPercentage(val) {
  if (val < 0) {
    return false;
  }

  if (val > 100) {
    return false;
  }

  return true;
}
精簡方案( 與或非請熟練運用 )
function isPercentage(val) {
  var isInRange = (val >= 0 && val <= 100);
  return isInRange;
}

# 給你的閉包命名
請儘可能給你的閉包、匿名函數命名。 
這讓人知道你在乎這個函數。
更重要的是,這將會產生可讀性更好的堆棧跟蹤和CPU調用信息等。
req.on('end', function onEnd() {
  console.log('winning');
});

# 不要嵌套閉包
使用閉包,可是不要嵌套他們,不然你的代碼將會一團糟。
setTimeout(function() {
  client.connect(afterConnect);
}, 1000);

function afterConnect() {
  console.log('winning');
}

# 使用單行註釋風格
不論是單行註釋仍是多行註釋,都使用 // 。 
同時請嘗試在更高層次來編寫註釋(解釋函數總體的思路), 只在解釋一些難以理解代碼的時候添加註釋,而不是給一些瑣碎的東西加上註釋。

# Object.preventExtensions 方法用於鎖住對象屬性,使其不可以拓展,也就是不能增長新的屬性,可是屬性的值仍然能夠更改,也能夠把屬性刪除
# Object.seal 把對象密封,也就是讓對象既不能夠拓展也不能夠刪除屬性\單數屬性值仍然能夠修改
# Object.freeze 徹底凍結對象,在seal的基礎上,屬性值也不能夠修改
# with
# eval
這一堆屎同樣的東西,你永遠都不會須要他們。


# Getters 和 Setters
不要使用 setters ,他們會引起一些使用你的代碼的人沒法解決的問題。 
當沒有反作用的時候,可使用 getters,例如提供一個集合類的長度屬性的時候。


# 空格
在全部的操做符先後都添加空格。
function 關鍵字後面添加空格。
var add = function (a, b) {
  return a + b;
};

# 文件命名
單詞之間使用 _ underscore 來分割。
若是你不想暴露某個文件給用戶,你也能夠用 _ 來開頭。
child_process.js
string_decoder.js
_linklist.js

Style Guidejavascript

相關文章
相關標籤/搜索