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