編程規范又叫代碼規范,為了便于自己和他人閱讀和理解源程序,而制定的編程時必須遵守的約定,javascript 項目有自己的代碼約定。
1. javascript 代碼約定
代碼約定(coding conventions)指的是編程的樣式指導方針。這些原則大體上包括:
- 變量和函數的命名和聲明規則
- 使用空格、縮進和注釋的規則
- 編程習慣和準則
代碼約定確保質量:
- 改善代碼可讀性
- 提升代碼可維護性
代碼約定可以是團隊遵守的成文規則,也可以是您個人的編碼習慣。
本頁介紹 yapf 使用的通用 javascript 代碼約定。
您應該繼續閱讀下一章“最佳實踐”,學習如何避免編碼陷阱。
2. 變量名
在 yapf,我們對標識符名稱(變量和函數)使用了駝峰式大小寫。
所有名稱以字母開頭。
在本頁的底部,我們會更廣泛地討論命名規則。
firstname = "bill"; lastname = "gates"; price = 19.90; tax = 0.20; fullprice = price + (price * tax);
3. 運算符周圍的空格
請始終在運算符( = + - * / )周圍以及逗號之后添加空格:
范例
var x = y + z; var values = ["volvo", "saab", "fiat"];
4. 代碼縮進
請始終使用對代碼塊縮進使用 4 個空格:
函數
function tocelsius(fahrenheit) { return (5 / 9) * (fahrenheit - 32); }
請不要對縮進使用制表符。不同的編輯器對 tab 的解釋也不盡相同。
5. 語句規則
簡單語句的通用規則:
請始終以分號結束單條語句:
范例
var values = ["volvo", "saab", "fiat"]; var person = { firstname: "bill", lastname: "gates", age: 50, eyecolor: "blue" };
針對復雜語句(compound)的通用規則:
- 請在第一行的結尾處寫開括號
- 請在開括號前使用一個空格
- 請在新行上寫閉括號,不帶前導空格
- 請不要以分號來結束復雜語句
函數:
function tocelsius(fahrenheit) { return (5 / 9) * (fahrenheit - 32); }
循環:
for (i = 0; i < 5; i++) { x += i; }
條件:
if (time < 20) { greeting = "good day"; } else { greeting = "good evening"; }
6. 對象規則
針對對象定義的通用規則:
- 把開括號與對象名放在同一行
- 在每個屬性與其值之間使用冒號加一個空格
- 不要在最后一個屬性值對后面寫逗號
- 請在新行上寫閉括號,不帶前導空格
- 請始終以分號結束對象定義
范例
var person = { firstname: "bill", lastname: "gates", age: 50, eyecolor: "blue" };
可以對短對象在一行中進行壓縮,只在屬性之間使用空格,就像這樣:
var person = {firstname:"bill", lastname:"gates", age:50, eyecolor:"blue"};
7. 行長度小于 80
為了提高可讀性,請避免每行的長度超過 80 個字符。
如果 javascript 語句超過一行的長度,換行的最佳位置是運算符或逗號之后。
范例
document.getelementbyid("demo").innerhtml = "hello kitty.";
8. 命名約定
請始終對您所有的代碼使用相同的命名約定。例如:
- 變量和函數名以駝峰大小寫來寫
- 全局變量使用大寫(我們不這樣做,但是相當普遍)
- 常量(比如 pi)使用大寫
我們是否應在變量名中使用連字符、駝峰大小寫或下劃線嗎?
這是程序員們經常討論的問題。答案取決于這個問題是誰回答的:
html 和 css 中的連字符:
html5 屬性能夠以 data- 開頭(data-quantity, data-price)。
css 在 property-names 中使用連字符(font-size)。
hyphens 可被錯誤地視為減法運算符。javascript 命名不允許使用連字符。
下劃線:
許多程序員喜歡使用下劃線(date_of_birth),特別是在 sql 數據庫中。
下劃線經常被用在 php 參考資料中。
帕斯卡命名法(pascalcase):
c 語言程序員經常使用帕斯卡命名法。
駝峰大小寫(camelcase):
javascript 本身、jquery 以及其他 javascript 庫使用駝峰大小寫。
javascript 命名請不要以 $ 符號開頭。此舉會引起 javascript 庫名稱沖突。
9. 在 html 中加載 javascript
使用簡單的語法來加載外部腳本(type 屬性不是必需的):
10. 訪問 html 元素
使用“不整潔的” html 樣式的后果,也許是導致 javascript 錯誤。
這兩條 javascript 語句會產生不同的結果:
var obj = getelementbyid("demo") var obj = getelementbyid("demo")
如果可能,請在 html 中使用相同的命名約定(就像 javascript 那樣)。
11. 文件擴展名
html 文件應該使用 .html 擴展名(而非 .htm)。
css 文件應該使用 .css 擴展名。
javascript 文件應該使用 .js 擴展名。
12. 使用小寫文件名
大多數 web 服務器(apache、unix)對文件名的大小寫敏感:
london.jpg 無法視作 london.jpg 進行訪問。
其他 web 服務器(微軟的 iis)對大小寫不敏感:
london.jpg 能夠以 london.jpg 或 london.jpg 來訪問。
如果您混合使用大小寫,則必須嚴格保持連續和一致。
如果您將站點從大小寫不敏感的服務器轉移至對大小寫敏感的服務器,即使這種小錯誤也可能破壞您的網站。
為了避免這些問題,請始終使用小寫文件名(如果可能)。
13. 性能
計算機不會使用代碼約定。大部分規則對程序的執行影響很小。
縮進和額外的空格對小段腳本并不重要。
對于開發中的腳本,應該優先考慮可讀性。應該縮小更大型的生產腳本。