版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1/1java程序書寫規(guī)范java程序書寫規(guī)范命名規(guī)范1、一般概念1、盡量使用完整的英文描述符2、采用適用于相關(guān)領(lǐng)域的術(shù)語3、采用大小寫混合使名字可讀4、盡量少用縮寫,但如果用了,必須符合整個工程中的統(tǒng)一定義5、避免使用長的名字(小于15個字母為正常選擇)6、避免使用類似的名字,或者僅僅是大小寫不同的名字7、避免使用下劃線(除靜態(tài)常量等)2、標(biāo)識符類型說明1、包(Package)的命名Package的名字應(yīng)該采用完整的英文描述符,都是由一個小寫單詞組成。
并且包名的前綴總是一個頂級域名,通常是com、edu、gov、mil、net、org等;如:
com.yjhmily.test2、類(Class)的命名類名應(yīng)該是個一名詞,采用大小寫混合的方式,每個單詞的首字母大寫。
盡量保證類名簡潔而富于描述。
使用完整單詞,避免縮寫詞(除非工程內(nèi)有統(tǒng)一縮寫規(guī)范或該縮寫詞被更廣泛使用,像URL,HTML)如:
FileDescription3、接口(Interface)的命名基本與Class的命名規(guī)范類似。
在滿足Classd命名規(guī)則的基礎(chǔ)之上,保證開頭第一個字母為I,便于與普通的Class區(qū)別開。
其實現(xiàn)類名稱取接口名的第二個字母到最后,且滿足類名的命名規(guī)范;如:
IMenuEngine4、枚舉(Enum)的命名基本與Class的命名規(guī)范類似。
在滿足Classd命名規(guī)則的基礎(chǔ)之上,保證開頭第一個字母為E,便于與普通的Class區(qū)別開。
如:
EUserRole5、異常(Exception)的命名異常(Exception)通常采用字母e表示異常,對于自定義的異常類,其后綴必須為Exception如:
BusinessException6、方法(Method)的命名方法名是一個動詞,采用大小寫混合的方式,第一個單詞的首字母小寫,其后單詞的首字母大寫。
方法名盡可能的描述出該方法的動作行為。
返回類型為Boolean值的方法一般由is或has來開頭如:
getCurrentUser()、addUser()、hasAuthority()7、參數(shù)(Param)的命名第一個單詞的首字母小寫,其后單詞的首字母大寫。
參數(shù)量名不允許以下劃線或美元符號開頭,雖然這在語法上是允許的。
參數(shù)名應(yīng)簡短且富于描述。
如:
publicUserContextgetLoginUser(StringloginName);8、常量字段(Constants)的命名靜態(tài)常量字段(staticfinal)全部采用大寫字母,單詞之間用下劃線分隔;如:
publicstaticfinalLongFEEDBACK;publicstaticLongUSER_STATUS;1.風(fēng)格務(wù)必保持一貫性(Consistent)一位同胞頂著我的鼻子問,為什么我們的Java代碼縮進格式非得是這樣,而不能是他那樣,他就是喜歡他自己的這一種,因此他寫的代碼總是用他自己習(xí)慣的風(fēng)格。
結(jié)果在CodeReview里被大家斃掉,責(zé)令修改。
因此他是大大地不服。
就是風(fēng)格一貫性問題。
其實他的風(fēng)格,本來也沒有什么問題,但在項目里,和其他程序員的程序的風(fēng)格,顯得扃異,那就存在問題了。
比如這個縮進,又比如變量命名方法,不同的類,不同的Methods里,各自不同,這程序就很難看了。
所以一旦你選擇了某種風(fēng)格,一定要貫徹始終。
如果一個項目里規(guī)定了一個風(fēng)格,即便很不符合你自己的習(xí)慣,也要貫徹始終,絕不應(yīng)該有標(biāo)新立異。
2.縮進風(fēng)格(indent)既然是從縮進說起,就先說說縮進風(fēng)格;一般來說,象Java這樣的類C語言,都采用縮進風(fēng)格。
而常用的,有四種A.KR風(fēng)格這是C程序最早的縮進風(fēng)格,由C的發(fā)明者Ritchie和他的合作者Kernighan率先使用:
if(cond){body}其特點,是大括號和if判斷在同一行。
通常,縮進為8個空格或一個tab鍵,但在C++和Java里,也常縮進4個空格。
有人喜歡用兩個空格,竊以為不好,不明顯。
B.BSD風(fēng)格又稱AllmanStyle,源自UnixBSD程序員EricAllman--他為BSD寫過很多程序:
if(cond){body}特點:
大括號和條件判斷分在兩行。
C.Whitesmith風(fēng)格這種風(fēng)格源于WhitesmithC:if(cond){body}D.GNU風(fēng)格這種風(fēng)格僅見于GNUEMACS的源程序中:
if(cond){body}那么在Java里用哪種好呢?建議只采用A或B。
SUN有一個JavaCodeNameConvention,建議的是A。
3.Tab還是空格(TabsvsSpace)還是縮進問題。
那么一次縮進應(yīng)該多大距離?是八個空格鍵,還是一個Tab鍵?Java有一個特點,就是跨平臺性。
不過跨平臺指的是它的Class可以在不同平臺的虛擬機上運行。
Java的源程序,有時候可不是跨平臺的。
什么?源程序還能不跨平臺?是的。
有次一個程序員送來一些Code,在我的環(huán)境里打開,程序難看得一塌糊涂,有該縮進的地方,沒有縮進,有的則縮進一大截,如同怪石一樣,嶙峋參差。
這樣的代碼質(zhì)量可不行!叫來程序員一問,答曰在他那里漂亮得很啊,他還專門花時間去美化它們了呢?原來他的縮進沒有注意一個風(fēng)格,在有的地方用Tab鍵,有的地方打空格。
在一些不同的平臺上,Tab鍵的寬度可是不一樣的。
說道這里,相信大家比較清楚了,在縮進的時候,盡量不用Tab,而是用空格。
好在許多編輯器,都可以把你的鍵盤上的Tab鍵定義成幾個空格。
趕緊去定義它!每次用多少空格呢?4個。
2個太少不明顯,8個太多占空間。
4.行寬說道8個空格鍵占空間,那么我一行有320列,8個空格算什么?打?。≌埣淖?,一行盡量不要超過80列。
許多終端一個屏幕只能顯示80列,為它們想想巴。
如果你的語句太長,想辦法折斷它,分幾列來寫。
5.變量命名SUNJavaCodeConvention里定義了Java里package,class,method和普通變量的命名規(guī)則,我就不用再浪費字節(jié)了。
這里提提一些注意事項和一些SUN沒提到但大家常用的方式。
a.用有意義的名字命名變量首先,用完整的英語單詞或約定俗成的簡寫命名你的變量,如:
firstNamezipCode如果英語不夠好,至少用別人看得懂的拼音命名,如zhuZhi(住址)胡亂簡寫,或者胡亂命名,則沒有人看得懂你的變量的含義:
fnzczzb.常量用全大寫加下畫線命名Java里的常量,就是staticfinal:staticfinalSMTH_BBS=bbs.tsinghua.edu.cn;c.用復(fù)數(shù)命名collection類變量collection包括數(shù)組,vector等。
命名時請用復(fù)數(shù):
customersclassMates也可以用一些修飾詞命名:
someStudentsallDepartmentsd.循環(huán)變量一般大家都用i,j,k等做循環(huán)變量。
e.Stream變量一般習(xí)慣用in,out作為Stream變量,對應(yīng)inputStream,outputStream類。
如果即讀又寫的ioStream,可以用inOut。
f.變量的命名習(xí)慣習(xí)慣MFC的人喜歡采用匈牙利命名法(HungarianNotation)。
如果你習(xí)慣這樣,盡管用,但注意要和同Project的人保持一致。
還有些人習(xí)慣C++里的下畫線方式,也可以采用。
HungarianNotation:sFirstNameUnderScoreStyle:_firstName這里提供一個HungarianNotation的前綴命名習(xí)慣:
intibytebcharcdoubledfloatflongloffsetofflengthlenObjectoStrings(orstr)Arbitrayvaluev6.Java文件格式有許多方式定義你的文件語句格式,以下是一個例子:
a.文件頭說明(可無)b.Package定義c.空行d.Import語句e.空行f.類定義如:
packagecom.midi;//JavaClassesimportjava.awt.*;importjava.io.*;importjavax.swing.event.*;//WebLogicClassesimportweblogic.internal.*;/***Blahblah*@authormidi*@version22.2*/publicclassMyFirstextendsJFrame{...}/***Foo...*@authormidi*@version38.2*/classFoo{...}7.import順序雜亂無章的順序,看起來很不順眼。
應(yīng)該對你要import的classes歸類,按順序羅列:
a.Java標(biāo)準(zhǔn)類(java.*)b.Java擴充類(javax.*)c.第三方類d.你的應(yīng)用程序的類而且注意在第三方類里注釋它們,說明它們的來源:
importjava.*;importjava.util.Date;importjava.util.Enumeration;importjavax.sql.*;//ApacheXercesimportorg.apache.xml.*;importorg.apache.xerces.dom.*;//Applicationclassesimportcom.midi.util.*;8.Classes的順序a.Javadoc注釋或者其它文件頭注釋b.類聲明c.Fields聲明d.空行e.構(gòu)造函數(shù)f.空行g(shù).方法(不包括main)h.空行i.Inner類j.空行k.main()例:
/***ThisisasimpleDOMtreeXMLparser...*...*@author:midi*@version:0.0.1**/publicclassMyParser{//publicconstantspublicstaticfinalStringTITLE=MyParser;publicstaticfinalStringVERSION=0.0.1;//PrivatevariablesprivateintiSchem
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 多點相關(guān)定位系統(tǒng)機務(wù)員操作規(guī)程能力考核試卷含答案
- 固體飲料加工工安全實踐考核試卷含答案
- 尿素加工工安全培訓(xùn)效果考核試卷含答案
- 化纖聚合工安全宣教競賽考核試卷含答案
- 軋制原料工崗前技術(shù)基礎(chǔ)考核試卷含答案
- 擠壓成型工崗前安全風(fēng)險考核試卷含答案
- 2024年蘄春縣幼兒園教師招教考試備考題庫附答案
- 2024年碌曲縣幼兒園教師招教考試備考題庫附答案
- 2024年秀山土家族苗族自治縣直遴選考試真題匯編附答案
- 2025年生態(tài)環(huán)境監(jiān)測與分析手冊
- 成體館加盟協(xié)議書范文范本集
- 高壓氣瓶固定支耳加工工藝設(shè)計
- 寵物服裝采購合同
- 攜程推廣模式方案
- THHPA 001-2024 盆底康復(fù)管理質(zhì)量評價指標(biāo)體系
- JGT138-2010 建筑玻璃點支承裝置
- 垃圾清運服務(wù)投標(biāo)方案(技術(shù)方案)
- 顱鼻眶溝通惡性腫瘤的治療及護理
- 光速測量實驗講義
- 斷橋鋁合金門窗施工組織設(shè)計
- 新蘇教版六年級科學(xué)上冊第一單元《物質(zhì)的變化》全部教案
評論
0/150
提交評論