命名規(guī)范
可以提高代碼移植性和可維護性的一個方面是命名規(guī)范。也就是說,在取變量名的時候總是采取一貫的做法。
無論采用什么樣的命名規(guī)范,其實都不是很重要,重要的是確定下來這個規(guī)范,然后遵守它。
構(gòu)造函數(shù)首字母大寫
javascript中沒有類,但是可以使用new來達到同樣的目的。
因為構(gòu)造函數(shù)也是函數(shù),如果能從名字上就能區(qū)別它是構(gòu)造函數(shù)還是普通函數(shù),對于開發(fā)者是非常有用的。所以將構(gòu)造函數(shù)的首字母大寫,普通函數(shù)的首字母小寫作為提示。這樣一眼就能區(qū)別。
單詞的分隔
當(dāng)你的變量名或者函數(shù)名是由好幾個單詞構(gòu)成的時候,如果能順利區(qū)分變量名由那幾個單詞構(gòu)成,也是非常不錯的體驗。這種命名規(guī)范成為駝峰式。所謂駝峰式就是以小寫字母開始,后面的每個單詞第一個字母大寫。
對于構(gòu)造函數(shù)第一個字母大寫,MyConstructor(),對于普通的函數(shù),就采用駝峰式myFunction(), calculateArea()。
那么變量怎么辦呢,有的人使用駝峰式,但是更好的辦法是使用下劃線來區(qū)分。first_name,favorite_bands, 以及 old_company_name。這也可以讓你一眼就能區(qū)分函數(shù)和變量。
其他命名規(guī)范
有時候,開發(fā)人員也會使用命名規(guī)范來替代和彌補一些語言的特性。
例如,在javascript中,并沒有提供定義常量的辦法(雖然有Number.MAX_VALUE),所以開發(fā)人員使用全大寫的名稱來表示不可更改的常量。var PI = 3.14, MAX_WIDTH = 800。
另外一種規(guī)范是使用全局變量名的首字母。這樣做可以強化開發(fā)者使全局變量最少,并且容易辨認。
另外一種規(guī)范是在函數(shù)中模擬私有成員。雖然可以在javascript中實現(xiàn)私有變量,但是開發(fā)人員為了更加容易區(qū)別,所以給他加一個下劃線的前綴。例如:
var person = { getName: function () { return this._getFirst() + ' ' + this._getLast(); }, _getFirst: function () { // ... }, _getLast: function () { // ... } };
在這個例子中,getName是一個公有函數(shù),是API的一部分,_getFirst,_getLast本意是私有的。雖然仍然是公有函數(shù),但hi加上了這個前綴,表示在以后的版本中不保證能運行,所以不應(yīng)該被直接使用。注意在JSLint中不推薦這樣做,除非你設(shè)置nomen選項為false。
還有其他幾種表示私有成員的規(guī)范:
- 在末尾使用下劃線,比如name_以及getElements_
- 使用一個下劃線表示保護成員_protected,兩個下劃線表示私有成員__private
- 在firefox中,有些不是語言原生的變量,以兩個下劃線開始,兩個下劃線結(jié)束__proto__以及__parent__
寫注釋
必須給你的代碼寫注釋,就算它看起來不會被別人接手。有時候,你研究完一個問題,然后你看著代碼覺得那是顯而易見的,但是過一兩周之后回頭再看,你也會摸不著頭腦的。
當(dāng)然,也不能過分的注釋:每個變量每一行代碼都注釋。但是通常都需要對函數(shù)的功能,參數(shù),返回值寫文檔,以及一些其他的復(fù)雜的邏輯和算法。想想,你的代碼的閱讀者,只需要讀注釋就能大體上了解你的代碼在做什么需要什么,這比直接讀代碼理解要快的多。當(dāng)你有五六行的代碼是做一個具體的任務(wù),那么閱讀者就可以通過一行代碼了解你的目的,然后跳過這些代碼。關(guān)于注釋,沒有硬性的比例說是多少代碼需要多少注釋。有時候,有些代碼(比如正則表達式)注釋的內(nèi)容肯定比代碼本身多。
寫注釋是必須遵守的規(guī)范,而且要保持注釋的更新,一個過時的注釋帶給人的迷惑還不如不寫注釋。
原文:http://net.tutsplus.com/tutorials/javascript-ajax/the-essentials-of-writing-high-quality-javascript/
本文鏈接:http://m.95time.cn/tech/web/2011/8319.asp
出處:rockux
責(zé)任編輯:bluehearts
上一頁 如何編寫高質(zhì)量的Javascript代碼 [8] 下一頁
◎進入論壇網(wǎng)頁制作、WEB標(biāo)準(zhǔn)化版塊參加討論,我還想發(fā)表評論。
|