版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 智能冷鏈物流行業(yè)市場(chǎng)發(fā)展趨勢(shì)及投資咨詢(xún)報(bào)告
- 有關(guān)教育演講稿五篇
- 2024全國(guó)各地區(qū)數(shù)學(xué)中考真題匯編《第二期》
- 2024年云南省中考數(shù)學(xué)試題含答案解析
- 2021-2022學(xué)年云南省西雙版納州勐??h一中物理高一下期末綜合測(cè)試模擬試題含解析
- 2024年高純四氧化三錳合作協(xié)議書(shū)
- 第一單元 中國(guó)開(kāi)始淪為半殖民地半封建社會(huì)復(fù)習(xí)提綱-2023-2024學(xué)年統(tǒng)編版八年級(jí)歷史下冊(cè)
- 技術(shù)部個(gè)人年終工作總結(jié)
- 暴雨級(jí)應(yīng)急措施(5篇)
- 有關(guān)建筑類(lèi)實(shí)習(xí)報(bào)告模板匯編6篇
- GB/T 13821-2023鋅合金壓鑄件
- 16 開(kāi)設(shè)幼兒保育專(zhuān)業(yè)的論證報(bào)告
- 山東教育出版社(魯教版)八年級(jí)化學(xué)全一冊(cè)教學(xué)課件
- 財(cái)務(wù)人員一對(duì)一談心談話(huà)記錄3篇
- BST100-E11E01-E21-C21定量皮帶給料機(jī)稱(chēng)重控制器操作手冊(cè)V3.6-B5
- 急診診療操作技術(shù)操作規(guī)范2023版
- 人教版三年級(jí)數(shù)學(xué)下冊(cè) 計(jì)算經(jīng)過(guò)的時(shí)間教學(xué)方案
- 節(jié)約糧食光盤(pán)行動(dòng)主題班會(huì)PPT模板
- 勞動(dòng)關(guān)系協(xié)調(diào)員(四級(jí))理論考試復(fù)習(xí)題庫(kù)(核心400題)
- 新疆喀什地區(qū)地直機(jī)關(guān)遴選公務(wù)員53人3筆試題庫(kù)含答案解析
- 六年級(jí)上冊(cè)科學(xué)全冊(cè)練習(xí)題(2023年新教科版)
評(píng)論
0/150
提交評(píng)論