java程序書(shū)寫(xiě)規(guī)范_第1頁(yè)
java程序書(shū)寫(xiě)規(guī)范_第2頁(yè)
java程序書(shū)寫(xiě)規(guī)范_第3頁(yè)
java程序書(shū)寫(xiě)規(guī)范_第4頁(yè)
java程序書(shū)寫(xiě)規(guī)范_第5頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1/1java程序書(shū)寫(xiě)規(guī)范java程序書(shū)寫(xiě)規(guī)范命名規(guī)范1、一般概念1、盡量使用完整的英文描述符2、采用適用于相關(guān)領(lǐng)域的術(shù)語(yǔ)3、采用大小寫(xiě)混合使名字可讀4、盡量少用縮寫(xiě),但如果用了,必須符合整個(gè)工程中的統(tǒng)一定義5、避免使用長(zhǎng)的名字(小于15個(gè)字母為正常選擇)6、避免使用類(lèi)似的名字,或者僅僅是大小寫(xiě)不同的名字7、避免使用下劃線(xiàn)(除靜態(tài)常量等)2、標(biāo)識(shí)符類(lèi)型說(shuō)明1、包(Package)的命名Package的名字應(yīng)該采用完整的英文描述符,都是由一個(gè)小寫(xiě)單詞組成。

并且包名的前綴總是一個(gè)頂級(jí)域名,通常是com、edu、gov、mil、net、org等;如:

com.yjhmily.test2、類(lèi)(Class)的命名類(lèi)名應(yīng)該是個(gè)一名詞,采用大小寫(xiě)混合的方式,每個(gè)單詞的首字母大寫(xiě)。

盡量保證類(lèi)名簡(jiǎn)潔而富于描述。

使用完整單詞,避免縮寫(xiě)詞(除非工程內(nèi)有統(tǒng)一縮寫(xiě)規(guī)范或該縮寫(xiě)詞被更廣泛使用,像URL,HTML)如:

FileDescription3、接口(Interface)的命名基本與Class的命名規(guī)范類(lèi)似。

在滿(mǎn)足Classd命名規(guī)則的基礎(chǔ)之上,保證開(kāi)頭第一個(gè)字母為I,便于與普通的Class區(qū)別開(kāi)。

其實(shí)現(xiàn)類(lèi)名稱(chēng)取接口名的第二個(gè)字母到最后,且滿(mǎn)足類(lèi)名的命名規(guī)范;如:

IMenuEngine4、枚舉(Enum)的命名基本與Class的命名規(guī)范類(lèi)似。

在滿(mǎn)足Classd命名規(guī)則的基礎(chǔ)之上,保證開(kāi)頭第一個(gè)字母為E,便于與普通的Class區(qū)別開(kāi)。

如:

EUserRole5、異常(Exception)的命名異常(Exception)通常采用字母e表示異常,對(duì)于自定義的異常類(lèi),其后綴必須為Exception如:

BusinessException6、方法(Method)的命名方法名是一個(gè)動(dòng)詞,采用大小寫(xiě)混合的方式,第一個(gè)單詞的首字母小寫(xiě),其后單詞的首字母大寫(xiě)。

方法名盡可能的描述出該方法的動(dòng)作行為。

返回類(lèi)型為Boolean值的方法一般由is或has來(lái)開(kāi)頭如:

getCurrentUser()、addUser()、hasAuthority()7、參數(shù)(Param)的命名第一個(gè)單詞的首字母小寫(xiě),其后單詞的首字母大寫(xiě)。

參數(shù)量名不允許以下劃線(xiàn)或美元符號(hào)開(kāi)頭,雖然這在語(yǔ)法上是允許的。

參數(shù)名應(yīng)簡(jiǎn)短且富于描述。

如:

publicUserContextgetLoginUser(StringloginName);8、常量字段(Constants)的命名靜態(tài)常量字段(staticfinal)全部采用大寫(xiě)字母,單詞之間用下劃線(xiàn)分隔;如:

publicstaticfinalLongFEEDBACK;publicstaticLongUSER_STATUS;1.風(fēng)格務(wù)必保持一貫性(Consistent)一位同胞頂著我的鼻子問(wèn),為什么我們的Java代碼縮進(jìn)格式非得是這樣,而不能是他那樣,他就是喜歡他自己的這一種,因此他寫(xiě)的代碼總是用他自己習(xí)慣的風(fēng)格。

結(jié)果在CodeReview里被大家斃掉,責(zé)令修改。

因此他是大大地不服。

就是風(fēng)格一貫性問(wèn)題。

其實(shí)他的風(fēng)格,本來(lái)也沒(méi)有什么問(wèn)題,但在項(xiàng)目里,和其他程序員的程序的風(fēng)格,顯得扃異,那就存在問(wèn)題了。

比如這個(gè)縮進(jìn),又比如變量命名方法,不同的類(lèi),不同的Methods里,各自不同,這程序就很難看了。

所以一旦你選擇了某種風(fēng)格,一定要貫徹始終。

如果一個(gè)項(xiàng)目里規(guī)定了一個(gè)風(fēng)格,即便很不符合你自己的習(xí)慣,也要貫徹始終,絕不應(yīng)該有標(biāo)新立異。

2.縮進(jìn)風(fēng)格(indent)既然是從縮進(jìn)說(shuō)起,就先說(shuō)說(shuō)縮進(jìn)風(fēng)格;一般來(lái)說(shuō),象Java這樣的類(lèi)C語(yǔ)言,都采用縮進(jìn)風(fēng)格。

而常用的,有四種A.KR風(fēng)格這是C程序最早的縮進(jìn)風(fēng)格,由C的發(fā)明者Ritchie和他的合作者Kernighan率先使用:

if(cond){body}其特點(diǎn),是大括號(hào)和if判斷在同一行。

通常,縮進(jìn)為8個(gè)空格或一個(gè)tab鍵,但在C++和Java里,也常縮進(jìn)4個(gè)空格。

有人喜歡用兩個(gè)空格,竊以為不好,不明顯。

B.BSD風(fēng)格又稱(chēng)AllmanStyle,源自UnixBSD程序員EricAllman--他為BSD寫(xiě)過(guò)很多程序:

if(cond){body}特點(diǎn):

大括號(hào)和條件判斷分在兩行。

C.Whitesmith風(fēng)格這種風(fēng)格源于WhitesmithC:if(cond){body}D.GNU風(fēng)格這種風(fēng)格僅見(jiàn)于GNUEMACS的源程序中:

if(cond){body}那么在Java里用哪種好呢?建議只采用A或B。

SUN有一個(gè)JavaCodeNameConvention,建議的是A。

3.Tab還是空格(TabsvsSpace)還是縮進(jìn)問(wèn)題。

那么一次縮進(jìn)應(yīng)該多大距離?是八個(gè)空格鍵,還是一個(gè)Tab鍵?Java有一個(gè)特點(diǎn),就是跨平臺(tái)性。

不過(guò)跨平臺(tái)指的是它的Class可以在不同平臺(tái)的虛擬機(jī)上運(yùn)行。

Java的源程序,有時(shí)候可不是跨平臺(tái)的。

什么?源程序還能不跨平臺(tái)?是的。

有次一個(gè)程序員送來(lái)一些Code,在我的環(huán)境里打開(kāi),程序難看得一塌糊涂,有該縮進(jìn)的地方,沒(méi)有縮進(jìn),有的則縮進(jìn)一大截,如同怪石一樣,嶙峋參差。

這樣的代碼質(zhì)量可不行!叫來(lái)程序員一問(wèn),答曰在他那里漂亮得很啊,他還專(zhuān)門(mén)花時(shí)間去美化它們了呢?原來(lái)他的縮進(jìn)沒(méi)有注意一個(gè)風(fēng)格,在有的地方用Tab鍵,有的地方打空格。

在一些不同的平臺(tái)上,Tab鍵的寬度可是不一樣的。

說(shuō)道這里,相信大家比較清楚了,在縮進(jìn)的時(shí)候,盡量不用Tab,而是用空格。

好在許多編輯器,都可以把你的鍵盤(pán)上的Tab鍵定義成幾個(gè)空格。

趕緊去定義它!每次用多少空格呢?4個(gè)。

2個(gè)太少不明顯,8個(gè)太多占空間。

4.行寬說(shuō)道8個(gè)空格鍵占空間,那么我一行有320列,8個(gè)空格算什么?打??!請(qǐng)寄住,一行盡量不要超過(guò)80列。

許多終端一個(gè)屏幕只能顯示80列,為它們想想巴。

如果你的語(yǔ)句太長(zhǎng),想辦法折斷它,分幾列來(lái)寫(xiě)。

5.變量命名SUNJavaCodeConvention里定義了Java里package,class,method和普通變量的命名規(guī)則,我就不用再浪費(fèi)字節(jié)了。

這里提提一些注意事項(xiàng)和一些SUN沒(méi)提到但大家常用的方式。

a.用有意義的名字命名變量首先,用完整的英語(yǔ)單詞或約定俗成的簡(jiǎn)寫(xiě)命名你的變量,如:

firstNamezipCode如果英語(yǔ)不夠好,至少用別人看得懂的拼音命名,如zhuZhi(住址)胡亂簡(jiǎn)寫(xiě),或者胡亂命名,則沒(méi)有人看得懂你的變量的含義:

fnzczzb.常量用全大寫(xiě)加下畫(huà)線(xiàn)命名Java里的常量,就是staticfinal:staticfinalSMTH_BBS=bbs.tsinghua.edu.cn;c.用復(fù)數(shù)命名collection類(lèi)變量collection包括數(shù)組,vector等。

命名時(shí)請(qǐng)用復(fù)數(shù):

customersclassMates也可以用一些修飾詞命名:

someStudentsallDepartmentsd.循環(huán)變量一般大家都用i,j,k等做循環(huán)變量。

e.Stream變量一般習(xí)慣用in,out作為Stream變量,對(duì)應(yīng)inputStream,outputStream類(lèi)。

如果即讀又寫(xiě)的ioStream,可以用inOut。

f.變量的命名習(xí)慣習(xí)慣MFC的人喜歡采用匈牙利命名法(HungarianNotation)。

如果你習(xí)慣這樣,盡管用,但注意要和同Project的人保持一致。

還有些人習(xí)慣C++里的下畫(huà)線(xiàn)方式,也可以采用。

HungarianNotation:sFirstNameUnderScoreStyle:_firstName這里提供一個(gè)HungarianNotation的前綴命名習(xí)慣:

intibytebcharcdoubledfloatflongloffsetofflengthlenObjectoStrings(orstr)Arbitrayvaluev6.Java文件格式有許多方式定義你的文件語(yǔ)句格式,以下是一個(gè)例子:

a.文件頭說(shuō)明(可無(wú))b.Package定義c.空行d.Import語(yǔ)句e.空行f.類(lèi)定義如:

packagecom.midi;//JavaClassesimportjava.awt.*;importjava.io.*;importjavax.swing.event.*;//WebLogicClassesimportweblogic.internal.*;/***Blahblah*@authormidi*@version22.2*/publicclassMyFirstextendsJFrame{...}/***Foo...*@authormidi*@version38.2*/classFoo{...}7.import順序雜亂無(wú)章的順序,看起來(lái)很不順眼。

應(yīng)該對(duì)你要import的classes歸類(lèi),按順序羅列:

a.Java標(biāo)準(zhǔn)類(lèi)(java.*)b.Java擴(kuò)充類(lèi)(javax.*)c.第三方類(lèi)d.你的應(yīng)用程序的類(lèi)而且注意在第三方類(lèi)里注釋它們,說(shuō)明它們的來(lái)源:

importjava.*;importjava.util.Date;importjava.util.Enumeration;importjavax.sql.*;//ApacheXercesimportorg.apache.xml.*;importorg.apache.xerces.dom.*;//Applicationclassesimportcom.midi.util.*;8.Classes的順序a.Javadoc注釋或者其它文件頭注釋b.類(lèi)聲明c.Fields聲明d.空行e.構(gòu)造函數(shù)f.空行g(shù).方法(不包括main)h.空行i.Inner類(lèi)j.空行k.main()例:

/***ThisisasimpleDOMtreeXMLparser...*...*@author:midi*@version:0.0.1**/publicclassMyParser{//publicconstantspublicstaticfinalStringTITLE=MyParser;publicstaticfinalStringVERSION=0.0.1;//PrivatevariablesprivateintiSchem

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論