




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、網(wǎng)易郵箱前端JavaScript編碼規(guī)范1 基礎(chǔ)規(guī)范部分在多年開發(fā)郵箱webmail過程中,網(wǎng)易郵箱前端團(tuán)隊(duì)積累了不少心得體會(huì),我們開發(fā)了很多基礎(chǔ)js庫(kù),實(shí)現(xiàn)了大量前端效果組件,開發(fā)了成熟的opoa框架以及api組件,在此向大家做一些分享。今天想先和大家聊聊javascript的編碼規(guī)范??偹苤琷avascript是一種語(yǔ)法極其靈活的語(yǔ)言。javascript在設(shè)計(jì)之初就只是用來(lái)為HTML添加動(dòng)態(tài)效果的。由于他動(dòng)態(tài),弱類型等特性,以及不同瀏覽器的兼容性問題,造成了開發(fā)成本要比java等語(yǔ)言要高很多。正因?yàn)樗`活,我們制定了適用于網(wǎng)易郵箱的javascript編碼規(guī)范,盡可能多的降低由于語(yǔ)
2、法靈活造成的問題。以下將具體介紹:1. 變量命名規(guī)范變量名包括全局變量,局部變量,類變量,函數(shù)參數(shù)等等,他們都屬于這一類?;疽?guī)范變量命名都以類型前綴+有意義的單詞組成,單詞首字母都需要大寫。例如:sUserName,nCount。前綴規(guī)范每個(gè)局部變量都需要有一個(gè)類型前綴,按照類型可以分為:s:表示字符串。例如:sName,sHtml;n:表示數(shù)字。例如:nPage,nTotal;b:表示邏輯。例如:bChecked,bHasLogin;a:表示數(shù)組。例如:aList,aGroup;r:表示正則表達(dá)式。例如:rDomain,rEmail;f:表示函數(shù)。例如:fGetHtml,fInit;o:表
3、示以上未涉及到的其他對(duì)象,例如:oButton,oDate;例外情況:1:作用域不大臨時(shí)變量可以簡(jiǎn)寫,比如:str,num,bol,obj,fun,arr。2:循環(huán)變量可以簡(jiǎn)寫,比如:i,j,k等。為什么需要這樣強(qiáng)制定義變量前綴?正式因?yàn)閖avascript是弱語(yǔ)言造成的。在定義大量變量的時(shí)候,我們需要很明確的知道當(dāng)前變量是什么屬性,如果只通過普通單詞,是很難區(qū)分的。例如:1. var group = 2. = 'myGroup' 3. /* &
4、#160;4. some code 5. */ 6. /這時(shí)候你還能一眼就看出來(lái)group是什么嗎? 又例如:1. var checked = false; 2. var check = function() 3. return true; 4. 5. /* 6. some code
5、 7. */ 8. if(check)/可能將checked寫成check,由于不能很快速的發(fā)現(xiàn)check是函數(shù),造成邏輯錯(cuò)誤 9. /do some thing 10. 如果我們寫成:1. var bChecked = false; 2. var fCheck = function() 3.
6、;return true; 4. 5. /* 6. some code 7. */ 8. if(bChecked) 9. / do some thing 10. 11. if(fCheck() 12. / do other
7、60;thing 13. 就清楚很多了。全局變量以及常量規(guī)范網(wǎng)易郵箱前端是基于“類”的概念來(lái)來(lái)開發(fā)javascript的(稍后會(huì)專門介紹),每個(gè)類定義都是在一個(gè)閉包函數(shù)中,除了在window下有類的定義而外,只允許有兩種變量定義在全局,那就是全局變量和常量。全局變量使用g作為前綴,定義在window下。例如gUserName,gLoginTime。某些作為不允許修改值的變量認(rèn)為是常量,全部字母都大寫。例如:COPYRIGHT,PI。常量可以存在于函數(shù)中,也可以存在于全局。看個(gè)例子就 很容易明白為什么要這樣定義了:1. var userName
8、60;= "dongua" 2. function checkName(userName) 3. /存在函數(shù)參數(shù)userName以及全局變量userName,如果要比較兩個(gè)值是否相等,必需寫為 4. return window.userName = userName 5. 如果使用了全局變量的前綴,就十分清晰了。2. 函數(shù)命
9、名規(guī)范統(tǒng)一使用動(dòng)詞或者動(dòng)詞名詞形式,例如:fGetVersion(),fSubmitForm(),fInit();涉及返回邏輯值的函數(shù)可以使用is,has等表示邏輯的詞語(yǔ)代替動(dòng)詞。如果有內(nèi)部函數(shù),使用_f+動(dòng)詞+名詞形式,內(nèi)部函數(shù)必需在函數(shù)最后定義。例如:1. function fGetNumber(nTotal) 2. if(nTotal<100) 3. nTotal = 100; 4. &
10、#160; 5. return _fAdd(nTotal); 6. 7. function _fAdd(nNumber) 8. nNumber+; 9. return nNumber; 10. 11. 12. alert(fGetNumber(30);
11、/alert 101 13. 對(duì)象方法對(duì)象方法命名使用 動(dòng)詞+名詞形式;例如 getEmail事件響應(yīng)函數(shù)某事件響應(yīng)函數(shù)命名方式為觸發(fā)事件對(duì)象名事件名或者模塊名觸發(fā)事件對(duì)象名事件名,例如:fDivClick(),fAddressSubmitButtonClick()3.其他注意事項(xiàng)1:所有命名最好使用英語(yǔ)表示。2:所有變量名應(yīng)該明確而必要,盡量避免不必要的容易混淆的縮寫。3:netease.events.mouse.Handler,而不是 netease.events.mouse.MouseEventHandler。4:對(duì)應(yīng)的方法應(yīng)該使用對(duì)應(yīng)的動(dòng)詞
12、,例如:get/set, add/remove, create/destroy, start/stop, insert/delete, begin/end。5:應(yīng)該避免雙重否定意義的變量,例如:bIsNotError, bIsNotFound,不可取。6:變量應(yīng)該在最小的范圍內(nèi)定義,并盡可能的保持最少的活動(dòng)時(shí)間。7:循環(huán)變量最好在循環(huán)中定義。例如for(var i=0,m=10;i<m;i+) do something。8:盡量避免復(fù)雜的條件語(yǔ)句,可以使用臨時(shí)的boolean變量代替。9:一定要避免在條件中執(zhí)行語(yǔ)句,例如:if(i=3)>2),不可取。10:不要在代碼中重復(fù)使用相同
13、意義的數(shù)字,用一個(gè)變量代替,比如 nTotal=100; num= total。2 類規(guī)范部分網(wǎng)易郵箱頁(yè)面在window只允許定義三種變量1:全局變量;2:常量;3:類。任何業(yè)務(wù)邏輯都需要通過類方法或者示例方法實(shí)現(xiàn)。前兩種變量在之前文章中已經(jīng)介紹,在此不再累述,接下來(lái)詳細(xì)介紹類定義和使用的規(guī)范。定義類是通過一個(gè)閉包完成的:1. (function() 2. /第一步:引入存在的類。引入support類 3. var Support = window.Support;
14、160; 4. 5. /$是網(wǎng)易郵箱基礎(chǔ)庫(kù)“base”的引用稍后會(huì)介紹 6. /第二步:定義類??梢哉J(rèn)為返回了一個(gè)類定義 function(),并在window下定義一個(gè)Image類 7. var Image = $.createClass("Image"); 8. 9.
15、; /可以認(rèn)為是jQuery的extend方法 10. 11. /第三步:定義類屬性/方法定義 12. $.Object.extend(Image, 13. _language : null, /內(nèi)部屬性 14. getSize : fI
16、mageGetSize 15. ); 16. /第四步:定義實(shí)例屬性/方法定義 17. $.Object.extend(Itotype, 18. name : null, 19. url : null, 20.
17、0; ext : null, 21. width : 0, 22. height : 0, 23. setName : fImageSetName, 24. getName :
18、 fImageGetName, 25. init : fImageInit 26. ); 27. /第五步:方法實(shí)現(xiàn) 28. 29. function fImageGetSize(nWidth,nHeight) 30. return&
19、#160;nWidth*nHeight; 31. 32. 33. function fImageSetName(sName) 34. var oImage = this; 35. oI = sName; 36.
20、60; 37. 38. function fImageGetName() 39. var oImage = this; 40. return oI; 41. 42. 43.
21、160;function fImageInit(sUrl) 44. var oImage = this; 45. oImage.url = sUrl; 46. oImage.ext = Support.getExt(sUrl); 47. oImage.width = Support.getWidth(sUrl); 48. oImage.height = Support.getHeigh
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國(guó)面包刷市場(chǎng)分析及競(jìng)爭(zhēng)策略研究報(bào)告
- 2025至2030年中國(guó)鋁鈦合金地拖市場(chǎng)分析及競(jìng)爭(zhēng)策略研究報(bào)告
- 2025至2030年中國(guó)遠(yuǎn)距離一體紅外夜視彩色攝像機(jī)市場(chǎng)分析及競(jìng)爭(zhēng)策略研究報(bào)告
- 2025至2030年中國(guó)網(wǎng)式載物臺(tái)車市場(chǎng)分析及競(jìng)爭(zhēng)策略研究報(bào)告
- 2025至2030年中國(guó)硝制毛皮市場(chǎng)分析及競(jìng)爭(zhēng)策略研究報(bào)告
- 2025至2030年中國(guó)電動(dòng)式管子坡口機(jī)市場(chǎng)分析及競(jìng)爭(zhēng)策略研究報(bào)告
- 2025至2030年中國(guó)灌裝加塞機(jī)市場(chǎng)分析及競(jìng)爭(zhēng)策略研究報(bào)告
- 2025至2030年中國(guó)汽車消聲器芯市場(chǎng)分析及競(jìng)爭(zhēng)策略研究報(bào)告
- 2025至2030年中國(guó)桿諾市場(chǎng)分析及競(jìng)爭(zhēng)策略研究報(bào)告
- 2025至2030年中國(guó)異形五金彈片市場(chǎng)分析及競(jìng)爭(zhēng)策略研究報(bào)告
- 《國(guó)有企業(yè)招投標(biāo)及采購(gòu)管理辦法》
- GB/T 16451-2008天然脂肪醇
- GB 5013.2-1997額定電壓450/750V及以下橡皮絕緣電纜第2部分:試驗(yàn)方法
- 普通高中物理課程標(biāo)準(zhǔn)
- 國(guó)家開放大學(xué)《監(jiān)督學(xué)》形考任務(wù)( 1-4)試題和答案解析
- 完工付款最終付款申請(qǐng)表
- 人工動(dòng)靜脈內(nèi)瘺
- 新版(七步法案例)PFMEA
- 慢阻肺隨訪記錄表正式版
- 廣西大學(xué)數(shù)學(xué)建模競(jìng)賽選拔賽題目
- 受戒申請(qǐng)表(共3頁(yè))
評(píng)論
0/150
提交評(píng)論