版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、網(wǎng)易郵箱前端JavaScript編碼規(guī)范1 基礎(chǔ)規(guī)范部分在多年開發(fā)郵箱webmail過程中,網(wǎng)易郵箱前端團隊積累了不少心得體會,我們開發(fā)了很多基礎(chǔ)js庫,實現(xiàn)了大量前端效果組件,開發(fā)了成熟的opoa框架以及api組件,在此向大家做一些分享。今天想先和大家聊聊javascript的編碼規(guī)范??偹苤琷avascript是一種語法極其靈活的語言。javascript在設(shè)計之初就只是用來為HTML添加動態(tài)效果的。由于他動態(tài),弱類型等特性,以及不同瀏覽器的兼容性問題,造成了開發(fā)成本要比java等語言要高很多。正因為它太靈活,我們制定了適用于網(wǎng)易郵箱的javascript編碼規(guī)范,盡可能多的降低由于語
2、法靈活造成的問題。以下將具體介紹:1. 變量命名規(guī)范變量名包括全局變量,局部變量,類變量,函數(shù)參數(shù)等等,他們都屬于這一類?;疽?guī)范變量命名都以類型前綴+有意義的單詞組成,單詞首字母都需要大寫。例如:sUserName,nCount。前綴規(guī)范每個局部變量都需要有一個類型前綴,按照類型可以分為:s:表示字符串。例如:sName,sHtml;n:表示數(shù)字。例如:nPage,nTotal;b:表示邏輯。例如:bChecked,bHasLogin;a:表示數(shù)組。例如:aList,aGroup;r:表示正則表達式。例如:rDomain,rEmail;f:表示函數(shù)。例如:fGetHtml,fInit;o:表
3、示以上未涉及到的其他對象,例如:oButton,oDate;例外情況:1:作用域不大臨時變量可以簡寫,比如:str,num,bol,obj,fun,arr。2:循環(huán)變量可以簡寫,比如:i,j,k等。為什么需要這樣強制定義變量前綴?正式因為javascript是弱語言造成的。在定義大量變量的時候,我們需要很明確的知道當(dāng)前變量是什么屬性,如果只通過普通單詞,是很難區(qū)分的。例如:1. var group = 2. = 'myGroup' 3. /* &
4、#160;4. some code 5. */ 6. /這時候你還能一眼就看出來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ù),造成邏輯錯誤 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)易郵箱前端是基于“類”的概念來來開發(fā)javascript的(稍后會專門介紹),每個類定義都是在一個閉包函數(shù)中,除了在window下有類的定義而外,只允許有兩種變量定義在全局,那就是全局變量和常量。全局變量使用g作為前綴,定義在window下。例如gUserName,gLoginTime。某些作為不允許修改值的變量認(rèn)為是常量,全部字母都大寫。例如:COPYRIGHT,PI。常量可以存在于函數(shù)中,也可以存在于全局??磦€例子就 很容易明白為什么要這樣定義了:1. var userName
8、60;= "dongua" 2. function checkName(userName) 3. /存在函數(shù)參數(shù)userName以及全局變量userName,如果要比較兩個值是否相等,必需寫為 4. return window.userName = userName 5. 如果使用了全局變量的前綴,就十分清晰了。2. 函數(shù)命
9、名規(guī)范統(tǒng)一使用動詞或者動詞名詞形式,例如:fGetVersion(),fSubmitForm(),fInit();涉及返回邏輯值的函數(shù)可以使用is,has等表示邏輯的詞語代替動詞。如果有內(nèi)部函數(shù),使用_f+動詞+名詞形式,內(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. 對象方法對象方法命名使用 動詞+名詞形式;例如 getEmail事件響應(yīng)函數(shù)某事件響應(yīng)函數(shù)命名方式為觸發(fā)事件對象名事件名或者模塊名觸發(fā)事件對象名事件名,例如:fDivClick(),fAddressSubmitButtonClick()3.其他注意事項1:所有命名最好使用英語表示。2:所有變量名應(yīng)該明確而必要,盡量避免不必要的容易混淆的縮寫。3:netease.events.mouse.Handler,而不是 netease.events.mouse.MouseEventHandler。4:對應(yīng)的方法應(yīng)該使用對應(yīng)的動詞
12、,例如:get/set, add/remove, create/destroy, start/stop, insert/delete, begin/end。5:應(yīng)該避免雙重否定意義的變量,例如:bIsNotError, bIsNotFound,不可取。6:變量應(yīng)該在最小的范圍內(nèi)定義,并盡可能的保持最少的活動時間。7:循環(huán)變量最好在循環(huán)中定義。例如for(var i=0,m=10;i<m;i+) do something。8:盡量避免復(fù)雜的條件語句,可以使用臨時的boolean變量代替。9:一定要避免在條件中執(zhí)行語句,例如:if(i=3)>2),不可取。10:不要在代碼中重復(fù)使用相同
13、意義的數(shù)字,用一個變量代替,比如 nTotal=100; num= total。2 類規(guī)范部分網(wǎng)易郵箱頁面在window只允許定義三種變量1:全局變量;2:常量;3:類。任何業(yè)務(wù)邏輯都需要通過類方法或者示例方法實現(xiàn)。前兩種變量在之前文章中已經(jīng)介紹,在此不再累述,接下來詳細(xì)介紹類定義和使用的規(guī)范。定義類是通過一個閉包完成的:1. (function() 2. /第一步:引入存在的類。引入support類 3. var Support = window.Support;
14、160; 4. 5. /$是網(wǎng)易郵箱基礎(chǔ)庫“base”的引用稍后會介紹 6. /第二步:定義類??梢哉J(rèn)為返回了一個類定義 function(),并在window下定義一個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. /第四步:定義實例屬性/方法定義 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. /第五步:方法實現(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. 本站所有資源如無特殊說明,都需要本地電腦安裝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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 學(xué)習(xí)貫徹黨的XX屆一中全會精神模板
- 二零二五年度產(chǎn)權(quán)置換簡易房屋買賣合同3篇
- 研發(fā)部門年終總結(jié)
- 二零二五年度房地產(chǎn)開發(fā)項目合伙人股權(quán)入股合同范本9篇
- 基于結(jié)構(gòu)化主題的單元整體教學(xué)-以小學(xué)數(shù)學(xué)學(xué)科為例
- 二零二五年度房產(chǎn)抵押貸款合同范本一(房屋抵押借款合同模板)15篇
- 四川省綿陽市江油市2024-2025學(xué)年八年級上學(xué)期期末教學(xué)質(zhì)量監(jiān)測道德與法治試題(含答案)
- 陜西省寶雞市鳳翔區(qū)2024-2025學(xué)年八年級上學(xué)期期末質(zhì)量檢測道德與法治試卷(含答案)
- 白嶺礦硐提升改造及螢石精粉浮選項目可行性研究報告模板-立項備案
- 湖南省常德市高中學(xué)校聯(lián)盟2024-2025學(xué)年高一上學(xué)期期末質(zhì)量檢測地理試題( 含答案)
- 銀行資產(chǎn)保全員工年度工作總結(jié)
- 鋼結(jié)構(gòu)網(wǎng)架驗收施工質(zhì)量自評報告-副本
- 《修心三不 不生氣 不計較 不抱怨》讀書筆記思維導(dǎo)圖
- 妊娠劇吐的護理查房
- GB/T 5023.5-2008額定電壓450/750 V及以下聚氯乙烯絕緣電纜第5部分:軟電纜(軟線)
- GB/T 36127-2018玉雕制品工藝質(zhì)量評價
- GB/T 23445-2009聚合物水泥防水涂料
- 漆畫漆藝 第三章
- (完整版)100道湊十法練習(xí)題
- 光伏逆變器一課件
- 2023年上海師范大學(xué)輔導(dǎo)員招聘考試筆試題庫及答案解析
評論
0/150
提交評論