


版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
建立和遵循編碼規(guī)范是很重要的,這讓你的代碼保持一致性,可預(yù)測,更易于閱讀和理解。一個新的開發(fā)者加入這個團(tuán)隊可以通讀規(guī)范解其它團(tuán)隊成員書寫的代碼快上手干活。許多激烈的爭論發(fā)生會議上或是郵件列表上,問題往往針對某些代碼規(guī)范的特定方面(例如代碼縮進(jìn),是Tab制表符鍵還是space空格鍵。如果你是你組織中建議采用規(guī)范的,準(zhǔn)備好面對各種的或是聽起來不同但很觀點。要記住,建立和堅定不移地遵循規(guī)范要比糾結(jié)于規(guī)范的細(xì)節(jié)重要的多??s進(jìn)代碼沒有縮進(jìn)基本上就不能讀了。唯一糟糕的事情就是不一致的縮進(jìn),因為它看上去像是遵循了規(guī)范,但是可能一伴隨著和驚奇。重要的是規(guī)范地使用縮進(jìn)。—些開發(fā)更喜歡用tab制表符縮進(jìn)因為任何人都可以調(diào)整他們的編輯器以自己喜歡的空格數(shù)來顯示Tab。有些人喜歡空格——通常四個,這都無所謂,只要團(tuán)隊每個人都遵循同一個規(guī)范就好了。這本書,例如,使用四個空格縮進(jìn),這也是JSLint中默認(rèn)的縮進(jìn)。什么應(yīng)該縮進(jìn)呢?規(guī)則很簡單——花括號里面的東西。這就意味著函數(shù)體,循環(huán)(do,while,for,forin),ifswitch,以及對象字面量中的對象屬性。下面的代碼就是使用縮進(jìn)的示例:functionouter(a,b){ cd= (a>b) function()returnc- else function()returnc+}return}花括號{}(Curly花括號(稱大括號同)總被使用使在它們?yōu)榭蛇x的時候。技術(shù)in或是for中如果語句僅一條括號是不需要的是你還是應(yīng)該總是使用它們會讓代碼更有持續(xù)性和易于更新。想象下你有一個只有一條語句的for循環(huán),你可以忽略花括號,而沒有解析的錯誤。12 (var=0;i<10;+=3但是,如果,后來,主體循環(huán)部分又增加了行代碼:12 (var=0;i<10;+=34alert(i+" +(i2 "odd" 第二個alert已經(jīng)在循環(huán)之外,縮進(jìn)可能了你。為了長遠(yuǎn)打算,最好總是使用花括號,即時值一行代碼:12 (var=0;i<10;+=1)34}if條件類似: 07{10 else12左花括號的位置(OpeningBrace開發(fā)對于左大括號的位置有著不同的偏好——在同一行或是下一行 (true)}或 {}這個實例中,仁者見仁智者見智,但也有個案,括號位置不同會有不同的行為表現(xiàn)。這是因為分號插入機(jī)制semicoloninsertionmechanism)——JavaScript是不挑剔的,當(dāng)你選擇不使用分號結(jié)束一行代碼時JavaScript會自己幫你補上。這種行為可能會導(dǎo)致麻煩,如當(dāng)你返回對象字面量,而左括號卻在下一行的時候:12function{345{6name:7}8}如果你希望函數(shù)返回一個含有name屬性的對象,你會驚訝。由于隱含分號,函數(shù)返回undefined。前面的代碼等價于:12function{3 45{6name:7}8}總之,總是使用花括號,并始終把在與之前的語句放在同一行:1function{2 3name:45}關(guān)于分號注:就像使用花括號,你應(yīng)該總是使用分號,即使他們可JavaScript解析器隱式創(chuàng)建。這不僅促進(jìn)更科學(xué)和更嚴(yán)格的代碼,而且有助于解決存有疑惑的地方如前面的例子顯示。空格(White空格的使用同樣有助于改善代碼的可讀性和一致性。在寫英文句子的時候,在逗號和后面會使用間隔。JavaScript中,你可以按照同樣的邏輯在列表模樣表達(dá)式(當(dāng)于逗號)結(jié)束語句(對于完成了想法”)面添加間隔。適合使用空格的地方包括:for循環(huán)分號分開后的的部分:如for(vari=0;i<10;i+=1){...}for循環(huán)中初始化的多變量(i和max)for(vari=0,max=10;i<max;i+=1){...}分隔數(shù)組項的逗號的后面:vara=[1,2,對象屬性逗號的后面以及分隔屬性名和屬性值的冒號的后面:varo={a:1,b:限定函數(shù)參數(shù):myFunc(a,b,函 的花括號的前面:functionmyFunc()函數(shù)表達(dá)式function的后面:varmyFunc=function(){};使用空格分開所有的操作符和操作對象是另一個不錯的使用,這意味著在+,-,*,=,<,>,<=,>=,===,!==,&&,||,+=等前后都需要空格vard=}+=a=a%d (a&&b&&c)a=b+vard=//使代//寬松a=+ {d=a}最后需要注意的一個空格——花括號間距。最好使用空格函數(shù)、if-else語句、循環(huán)、對象字面量的左花括號的前面elsewhile之間的右花括號空格使用的一點不足就是增加了文件的大小,但是壓縮無此問題。有一個經(jīng)常被忽略的代碼可讀性方面是垂直空格的使用。你可以使用空行來分隔代碼單元,就像是文學(xué)作品中使用段落分隔一樣。另法讓你的代碼更具可預(yù)測性和可性是采用命名規(guī)范。這就意味著你需要用同一種形式給你的變量和函數(shù)命名。下面是建議的一些命名規(guī)范,你可以原樣采用,也可以根據(jù)自己的喜好作調(diào)整。同樣,遵循規(guī)范要比規(guī)范是什么更重要。JavaScript并沒有類,但有new調(diào)用的構(gòu)造函數(shù) 1因為構(gòu)造函數(shù)仍僅僅是函數(shù),僅看函數(shù)名就可以幫助告訴你這應(yīng)該是一個構(gòu)造函數(shù)還是一個正常的函數(shù)。命名構(gòu)造函數(shù)時首字母大寫具有暗示作用,使用小寫命名的函數(shù)和方法不應(yīng)該使用new調(diào)用:1function2function當(dāng)你的變量或是函數(shù)名有多個單詞的時候,最好單詞的分離遵循統(tǒng)一的規(guī)范,有一個常見的做法被稱作“駝峰(Camel)命名法”,就是單詞小寫,每個單詞的首字母大寫。對于構(gòu)造函數(shù)可以使用大駝峰式命名法uppercamelcase),如MyConstructor()。對于函數(shù)和方名稱,你可以使用小駝峰式命名法(lowercamelcasemyFunction(),calculateArea()getFirstName()要是變量不是函數(shù)呢?開發(fā)者通常使用小駝峰式命名法,但還有另外一種做法就是所有單詞小寫以下劃線連接:例如,first_name,favorite_bands,和 pany_name,這種標(biāo)記法幫你直觀地區(qū)分函數(shù)和其他標(biāo)識——原型和對象。ECMAScript的屬性和方法均使用Camel標(biāo)記法盡管多字的屬性名稱是罕見的(正則表達(dá)式對象的lastIndexignoreCase屬性)其它命名形式(OtherNaming有時,開發(fā)使用命名規(guī)范來彌補或替代語言特性。例如,JavaScript中沒有定義常量的方法(盡管有些內(nèi)置的像Number,MAX_VALUE),所以開發(fā)者都采用全部單詞大寫的規(guī)范來命名這個程序生命周期中都不會改變的變量,如:12 PI=3=還有另外一個完全大寫的慣例:全局變量名字全部大寫。全部大寫命名全局變量可以加強(qiáng)減小全局變量數(shù)量的實踐,同時讓它們易于區(qū)分。另外一種使用規(guī)范來模擬功能的是私有成員。雖然可以在JavaScript中實現(xiàn)真正的私有,但是開發(fā)者發(fā)現(xiàn)僅僅使用一個下劃線前綴來表示一個私有屬性或方更容易些??紤]下面的例子:var=getName:function{ '' _getFirst:function{//_getLast:function{//}在此例getName()就表示公共方法分穩(wěn)定的API。而_getFirst()和_getLast()則表明了私有。它們?nèi)匀皇钦5墓卜椒ǎ鞘褂孟聞澗€前綴來警告對象的使用者這些方法在下一個版本中時不能保證工作的,是不能直接使用的。注意,JSLint有些不鳥下劃線前綴,除非你設(shè)置了noman選項為:false下面是一些常見的_private規(guī)范:使用尾下劃線表示私有,如name_和 ements_()使用一個下劃線前綴表_protected(保護(hù))屬性,兩個下劃線前綴表示private?(私有)Firefox中一些內(nèi)置的變量屬性不屬于該語言的技術(shù)部分,使用兩個前下劃線和兩個后下劃線表示,如:proto 和parent 注釋(Writing你必須注釋你的代碼,即使不會有其他人向你一樣接觸它。通常,當(dāng)你深入研究一個問題,你會很清楚的知道這個代碼是干嘛用的,但是,當(dāng)你一周之后再回來看的時候,想必也要耗掉不少腦細(xì)胞去搞明白到底怎么工作的。很顯然,注釋不能走:每個單獨變量或是單獨一行。但是,你通常應(yīng)該記錄所有的函數(shù),它們的參數(shù)和返回值,或是任何不尋常的技術(shù)和方法。要想到注釋可以給你代碼
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 業(yè)主主要合同范本
- 土方供應(yīng)合同范本
- 公館購房合同范本
- 加入商場合作合同范本
- 農(nóng)村柴火售賣合同范本
- 借用單位合同范本
- 個人頂賬房合同范本
- 單位裁員解聘合同范本
- 分體空調(diào)保養(yǎng)合同范本
- 勞務(wù)大工小工合同范本
- 路基換填級配碎石施工方案
- GRR表格MSA第四版完整版
- EIM Book 1 Unit 7 Learning languages單元檢測試題
- 第一講 新媒體藝術(shù)基礎(chǔ)-數(shù)字媒體藝術(shù)導(dǎo)論課件PPT
- 2023年山東電子職業(yè)技術(shù)學(xué)院單招面試模擬試題及答案解析
- 四川省政府采購評審專家考試題庫
- 內(nèi)科學(xué)尿路感染(講課)
- GB/T 605-2006化學(xué)試劑色度測定通用方法
- GB/T 34875-2017離心泵和轉(zhuǎn)子泵用軸封系統(tǒng)
- GB/T 27924-2011工業(yè)貨架規(guī)格尺寸與額定荷載
- Unit 2 Lets celebrate Developing ideas-Writing a letter to express 課件【知識精講+拓展訓(xùn)練】高中英語外研版(2019)必修第二冊
評論
0/150
提交評論