tencentjava編碼規(guī)范_第1頁
tencentjava編碼規(guī)范_第2頁
tencentjava編碼規(guī)范_第3頁
tencentjava編碼規(guī)范_第4頁
tencentjava編碼規(guī)范_第5頁
已閱讀5頁,還剩10頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、TencentSiH騰訊集團(tuán)管理標(biāo)準(zhǔn)GL/YF013-2007V1.0-L1Java 編碼規(guī)范2007-09-11 實(shí)施騰訊集團(tuán)發(fā)布2007-09-11 發(fā)布本標(biāo)準(zhǔn)系公司首次發(fā)布實(shí)施, 主要針對公司所有軟件產(chǎn)品源代碼范圍的Java編碼風(fēng)格, 對Java文件的文件組織、代碼風(fēng)格、注釋、命名、聲明、異常、習(xí)慣等方面均作出規(guī)范,以保障公司項(xiàng)目代碼的易維護(hù)性和編碼安全性。本標(biāo)準(zhǔn)由研發(fā)管理部、3G產(chǎn)品中心共同制定。本標(biāo)準(zhǔn)主要起草人:Junjun(張莉/)、Iron(邱會(huì)發(fā))本標(biāo)準(zhǔn)主要審核人:anwenfeng(馮文信)、Paulinesong(宋虹漫)、Ericlin(林松)、Stevezheng(鄭全

2、戰(zhàn))、Junehuang(黃俊)、Kevinxu(許冠嚴(yán))、polo(陳廣域)、leon(郭凱天)本標(biāo)準(zhǔn)批準(zhǔn)人:jeffxiong(熊明華)、charles(陳一丹)、tony(張志東)、ponyma(馬化騰)本標(biāo)準(zhǔn)首次發(fā)布日期:2007年9月11日本標(biāo)準(zhǔn)發(fā)送部門:公司各部門JAVA 編碼規(guī)范1目的為形成公司統(tǒng)一的Java編碼風(fēng)格,以保障公司項(xiàng)目代碼的易維護(hù)性和編碼安全性,特制定本規(guī)范。2適用范圍本標(biāo)準(zhǔn)適用于騰訊集團(tuán)(含分公司等各級(jí)分支機(jī)構(gòu))所有使用Java作為開發(fā)語言的軟件產(chǎn)品。本標(biāo)準(zhǔn)中“騰訊集團(tuán)”是指騰訊控股有限公司、其附屬公司、及為會(huì)計(jì)而綜合入賬的公司,包括但不限于騰訊控股有限公司、深圳

3、市騰訊計(jì)算機(jī)系統(tǒng)有限公司、騰訊科技(深圳)有限公司、騰訊科技(北京)有限公司、深圳市世紀(jì)凱旋科技有限公司、時(shí)代朝陽科技(深圳)有限公司、騰訊數(shù)碼(深圳)有限公司、深圳市財(cái)付通科技有限公司。3總體原則所有使用Java作為開發(fā)語言的軟件產(chǎn)品都須遵照本規(guī)范的內(nèi)容進(jìn)行編碼。4文件組織4.1規(guī)則4.1.1由于超過2000行的程序難以閱讀,應(yīng)該盡量避免出現(xiàn)超過2000行的程序;4.1.2一個(gè)Java源文件都包含一個(gè)單一的公共類或接口。若私有類和接口與一個(gè)公共類相關(guān)聯(lián),可以將它們和公共類放入同一個(gè)源文件。公共類必須是這個(gè)文件中的第一個(gè)類或接口。4.2組織順序4.2.1文件注釋(參見6.1文件注釋);4.2.

4、2包和引入語句: 在多數(shù)Java源文件中, 第一個(gè)非注釋行是包語句。在它之后可以跟引入語句;4.2.3類或接口注釋(參見”6.2類或接口注釋”兀4.2.4類或接口的聲明;4.2.5類或接口的實(shí)現(xiàn)注釋: 如果有關(guān)類或接口的信息不適合作為“類或接口文檔注釋”可以在類或接口的實(shí)現(xiàn)注釋中給出;4.2.6類的(靜態(tài))變量:首先是類的公共變量,隨后是保護(hù)變量,再后是包一級(jí)別的變量(沒有訪問修飾符),最后是私有變量;4.2.7實(shí)例變量:首先是公共級(jí)別的,隨后是保護(hù)級(jí)別的,再后是包一級(jí)別的(沒有訪問修飾符),最后是私有級(jí)別的;4.2.8構(gòu)造方法;4.2.9方法:方法應(yīng)該按功能分組,而不應(yīng)該按作用域或訪問權(quán)限進(jìn)

5、行分組。4.3范例直接查看以下文件可以找到編碼套用的規(guī)則:If七(注:可以通過復(fù)制粘貼保存到硬盤)5代碼風(fēng)格*縮進(jìn)*程序塊要采用縮進(jìn)風(fēng)格編寫,縮進(jìn)只使用TAB鍵,不能使用空格鍵(編輯器中請將TAB設(shè)置為4格);*方法體的開始、類的定義、以及if、for、do、whileswitchcase語句中的代碼都要采用縮進(jìn)方式;*對齊*程序塊的分界符左大括號(hào)和右大括號(hào)下都另起一行,應(yīng)各獨(dú)占一行并且位于同一列,同時(shí)與引用它們的語句左對齊;*對齊只使用TAB鍵,不使用空格鍵;*不允許把多個(gè)短語句寫在一行中,即一行只寫一條語句;*if、for、do、whilecaseswitchdefault等語句自占一行。

6、*換行一行的長度超過80個(gè)字符需要換行,換行規(guī)則如下:*在一個(gè)逗號(hào)后面斷開;*在一個(gè)操作符前面斷開;*長表達(dá)式要在低優(yōu)先級(jí)操作符處劃分新行;*新行縮進(jìn)2個(gè)TAB。*間隔*類、方法及相對獨(dú)立的程序塊之間、變量說明之后必須加空行;*關(guān)鍵字之后要留空格,象if、for、while等關(guān)鍵字之后應(yīng)留一個(gè)空格再跟左括號(hào)(,以突出關(guān)鍵字;*方法名與其左括號(hào)(”之間不要留空格,以與關(guān)鍵字區(qū)別;*二元操作符如=、+=、=、+、*、&、|、1)(intisShow=0;/是否顯示1多行注釋使用注釋界定符/*.*/,例如:/*Hereisablockcommentwithmultiplelinesforte

7、xtcomments.*/7命名基本規(guī)則使用可以準(zhǔn)確說明變量、字段、類、接口、包等完整的英文描述符;采用大小寫混合,提高名字的可讀性;采用該領(lǐng)域的術(shù)語;盡量少用縮寫,但如果一定要使用,當(dāng)使用公共縮寫和習(xí)慣縮寫等;避免使用相似或者僅在大小寫上有區(qū)別的名字。包命名包名一律小寫,少用縮寫和長名;采用以下規(guī)則:基本包.項(xiàng)目名.模塊名.子模塊名.基本包:com.tencent或com.qq;不得將類直接定義在基本包下,所有項(xiàng)目中的類、接口等都應(yīng)當(dāng)定義在各自的項(xiàng)目和模塊包中;例如:packagecom.tencent.kqq;packagecom.tencent.kqq.util;類或接口命名類或接口名是

8、個(gè)一名詞,采用大小寫混合的方式,每個(gè)單詞的首字母大寫。盡量使你的類名簡潔而富于描述。使用完整單詞,避免用縮寫詞(除非該縮寫詞被更廣泛使用,像URL,HTML)。例如:classRaster;classImageSprite;interfaceRasterDelegate;interfaceStoring;變量命名采用大小寫混合的方式,第一個(gè)單詞的首字母小寫,其后單詞的首字母大寫;變量名不應(yīng)以下劃線或美元符號(hào)開頭;盡量避免單個(gè)字符的變量名,除非是一次性的臨時(shí)變量。臨時(shí)變量通常被取名為i,j,k,m和n,它們一般用于整型;c,d,e,它們一般用于字符型;不采用匈牙利命名法則,對不易清楚識(shí)別出該變量

9、類型的變量應(yīng)使用類型名或類型名縮寫作其后綴,例如:ThreadanimationThread;StringresponseStr;組件或部件變量使用其類型名或類型名縮寫作其后綴,例如:CommandbackCommand;ImagebarImage;TextFieldpasswordField;PlayerdogSoundPlayer;集合類型變量,例如數(shù)組和矢量,應(yīng)采用復(fù)數(shù)命名或使用表示該集合的名詞做后綴:Imageimages;VectorrequestQueue;常量命名全部采用大寫,單詞間用下劃線隔開:staticfinalintMIN_WIDTH=4;staticfinalintMA

10、X_WIDTH=999;staticfinalintGET_THE_CPU=1;方法命名方法名是一個(gè)動(dòng)詞,采用大小寫混合的方式,第一個(gè)單詞的首字母小寫,其后單詞的首字母大寫;取值類可使用get前綴,設(shè)值類可使用set前綴,判斷類可使用is(has)前綴。getName();setSarry();isLogon();8聲明類或接口聲明類、接口定義語法規(guī)范:可見性(abstractTfinal)Class|Interfaceclass_name(extendsTimplements)父類或接口名例如:publicclassGameScreenextendsCanvasimplementsComma

11、ndListener,Runnable,HttpPosterListener(J方法聲明良好的程序設(shè)計(jì)應(yīng)該盡可能減小類與類之間耦合,所遵循的經(jīng)驗(yàn)法則是:盡量限制成員函數(shù)的可見性。如果成員函數(shù)沒必要公有(public),就定義為保護(hù)(protected);沒必要保護(hù)(protected),就定義為私有(private);方法定義語法規(guī)范:可見性abstractstaticfnalsynchronized”返回值類型method_name參數(shù)歹!J表)(throws)異常歹!J表()例如:privatevoidsendLoginRequest(Stringusername,Stringpasswo

12、rd)throwsIOException(聲明順序:構(gòu)造方法靜態(tài)公共方法靜態(tài)私有方法公共方法友元方法受保護(hù)方法私有方法main方法方法參數(shù)建議順序:(被操作者,操作內(nèi)容,操作標(biāo)志,其他):publicvoidreplace(StringsourceStr,源宇串StringoldStr,被替換字用StringnewStr)替換為字用(建議性)變量聲明一行一個(gè)聲明;聲明局部變量的同時(shí)初始化(在變量的初始值依賴于某些先前發(fā)生的計(jì)算的特殊情況下可以不用同時(shí)初始化);只在代碼塊的開始處聲明變量,(一個(gè)塊是指任何被包含在大括號(hào)和T中間的代碼)不要在首次用到該變量時(shí)才聲明;避免聲明的局部變量覆蓋上一級(jí)聲明

13、的變量,即不要在內(nèi)部代碼塊中聲明相同的變量名;公共和保護(hù)的可見性應(yīng)當(dāng)盡量避免,所有的字段都建議置為私有,由獲取和設(shè)置成員函數(shù)(GetterSetter)訪問;定義一個(gè)變量或者常量的時(shí)候,不要包含包名(類似java.security.MessageDigestdigest=null),而要定義成下面的格式,除非是兩個(gè)包有相同的類名:importjava.security.MessageDigest;MessageDigestdigest=MessageDigest.getInstance(MD5);字段定義語法規(guī)范:(public|private|protected)staticfinaldat

14、a_typefield_name=expression例如:privatestaticfinalintTILE_WIDTH=16;數(shù)組聲明時(shí)應(yīng)當(dāng)將跟在類型后,而不是字段名后:privateImageimages;privateintslowerTicks口;/不要用這種數(shù)組聲明方式聲明順序:常量類變量實(shí)例變量:公有字段受保護(hù)字段友元字段私有字段/常量publicfinalstaticdoublePI=3.141592653589793;/類變量protectedstaticStringkey=Love”;/實(shí)例變量/*共有字段/publicStringuserName=ToM;/*受保護(hù)字段/protectedfloatprice=0.0;/*友元字段/VectorvPorducts=null;/*私有字段/privateintcount;9異常捕捉異常的目的是為了處理它。多個(gè)異常應(yīng)分別捕捉并處理,避免使用一個(gè)單一的catch來處理10習(xí)慣if、for、do、while等語句的執(zhí)行語句部分無論多少都要加括號(hào)(;每當(dāng)一個(gè)case順著

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論