1. 程式人生 > >世界頂級互聯網公司 Google JavaScript 代碼風格指南

世界頂級互聯網公司 Google JavaScript 代碼風格指南

long ogl 發現 result prop 語句 人才 images 代碼

技術分享圖片

Google 和 Airbnb 是目前最流行的 JavaScript 代碼風格,如果你長期使用 JavaScript 來寫代碼的話,建議對比看看。

以下是我認為在 Google 代碼風格指南中最有意思的十三條規則,和大家分享一下:

使用空格,而不是 tab

除了行終止符外,在系統文件中,空格是唯一表示空白的字符,這意味著 tab 不能作為縮進使用。

這份指南規定用2個空格(而不是4個)來表示縮進。

// bad
function foo() {
????let name;
}

// bad
function bar() {
?let name;
}

// good
function baz() {
??let name;
}

必不可少的分號

每個語句都必須以分號結尾,不要依賴編譯器自動插入分號。

盡管我無法理解為什麽有人會反對加分號,就像“tab 和 空格”爭論一樣。無論怎麽樣 Google 是站在加分號這邊的。

// bad
let luke = {}
let leia = {}
[luke, leia].forEach(jedi => jedi.father = ‘vader‘)

// good
let luke = {};
let leia = {};
[luke, leia].forEach((jedi) => {
  jedi.father = ‘vader‘;
});

暫時不要用 ES6 模塊化

暫時不要用 ES6 模塊化(比如 import 和 export 關鍵字),因為 ES6 模塊化的語法還沒最終確定。

// Don‘t do this kind of thing yet:

//------ lib.js ------
export function square(x) {
    return x * x;
}
export function diag(x, y) {
    return sqrt(square(x) + square(y));
}

//------ main.js ------
import { square, diag } from ‘lib‘;

不鼓勵上下對齊代碼

盡量不要上下對齊代碼,維護成本太高。

// bad
{
  tiny:   42,  
  longer: 435, 
};

// good
{
  tiny: 42, 
  longer: 435,
};

不使用 var

聲明局部變量用 const 或者 let,默認使用 const,除非變量需要重新賦值。

// bad
var example = 42;

// good
let example = 42;

箭頭函數完美替代 function

箭頭函數不僅語法簡潔易讀,而且修復了 this 的問題,特別是在嵌套函數中。

// bad
[1, 2, 3].map(function (x) {
  const y = x + 1;
  return x * y;
});

// good
[1, 2, 3].map((x) => {
  const y = x + 1;
  return x * y;
});

用模板字符串替代字符串拼接

用模板字符串(用 ` 分割)處理復雜的字符串,特別是處理多行的字符串。

// bad
function sayHi(name) {
  return ‘How are you, ‘ + name + ‘?‘;
}

// bad
function sayHi(name) {
  return [‘How are you, ‘, name, ‘?‘].join();
}

// bad
function sayHi(name) {
  return `How are you, ${ name }?`;
}

// good
function sayHi(name) {
  return `How are you, ${name}?`;
}

for 循環首選 “for… of”

在 ES6 中,支持多種 for 循環寫法,可能你都用過,但盡可能選用 for… of 吧。

不要使用 eval()

不要使用 eval() (代碼加載器除外),會帶來潛在的不確定性,因為在 CSP 環境中無法工作。

在 MDN中也明確提到了,不用使用 eval()。

// bad
let obj = { a: 20, b: 30 };
let propName = getPropName();  // returns "a" or "b"
eval( ‘var result = obj.‘ + propName );

// good
let obj = { a: 20, b: 30 };
let propName = getPropName();  // returns "a" or "b"
let result = obj[ propName ];  //  obj[ "a" ] is the same as obj.a

常量用大寫字母加下劃線

常量用大寫字母加下劃線表示,所有單詞大寫,下劃線分割。

如果你的代碼遵守此規則,可大大增加代碼的可閱讀性,但需要註意的是,如果常量是函數,需要寫成駝峰。

// bad
const number = 5;

// good
const NUMBER = 5;

每次申明一個變量

每次申明一個變量,不要寫成 let a = 1, b = 2;

// bad
let a = 1, b = 2, c = 3;

// good
let a = 1;
let b = 2;
let c = 3;

用單引號,不要用雙引號

普通的字符串用單引號分割(’),如果字符串中包含單引號,那麽考慮用模板字符串。

// bad
let directive = "No identification of self or mission."

// bad
let saying = ‘Say it ain\u0027t so.‘;

// good
let directive = ‘No identification of self or mission.‘;

// good
let saying = `Say it ain‘t so`;

最後

很多時候跟著書和網站查找資料學習,會發現沒有目標,學了很多卻不知道自己到底能夠做出什麽成績。要有一個清晰的職業學習規劃,學習過程中會遇到很多問題,你可以到我們的前端學習交流q-u-n【 731771211 】,基礎,進階。從企業招聘人才需求 到怎麽學習前端開發,和學習什麽內容都有免費系統分享,讓你無論是自學還是找相應的培訓都能讓你少走彎路。希望可以幫助你快速了解前端,學習前端

點擊:加入

世界頂級互聯網公司 Google JavaScript 代碼風格指南