




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1/1java程序書寫規(guī)范java程序書寫規(guī)范命名規(guī)范1、一般概念1、盡量使用完整的英文描述符2、采用適用于相關(guān)領(lǐng)域的術(shù)語3、采用大小寫混合使名字可讀4、盡量少用縮寫,但如果用了,必須符合整個(gè)工程中的統(tǒng)一定義5、避免使用長的名字(小于15個(gè)字母為正常選擇)6、避免使用類似的名字,或者僅僅是大小寫不同的名字7、避免使用下劃線(除靜態(tài)常量等)2、標(biāo)識符類型說明1、包(Package)的命名Package的名字應(yīng)該采用完整的英文描述符,都是由一個(gè)小寫單詞組成。
并且包名的前綴總是一個(gè)頂級域名,通常是com、edu、gov、mil、net、org等;如:
com.yjhmily.test2、類(Class)的命名類名應(yīng)該是個(gè)一名詞,采用大小寫混合的方式,每個(gè)單詞的首字母大寫。
盡量保證類名簡潔而富于描述。
使用完整單詞,避免縮寫詞(除非工程內(nèi)有統(tǒng)一縮寫規(guī)范或該縮寫詞被更廣泛使用,像URL,HTML)如:
FileDescription3、接口(Interface)的命名基本與Class的命名規(guī)范類似。
在滿足Classd命名規(guī)則的基礎(chǔ)之上,保證開頭第一個(gè)字母為I,便于與普通的Class區(qū)別開。
其實(shí)現(xiàn)類名稱取接口名的第二個(gè)字母到最后,且滿足類名的命名規(guī)范;如:
IMenuEngine4、枚舉(Enum)的命名基本與Class的命名規(guī)范類似。
在滿足Classd命名規(guī)則的基礎(chǔ)之上,保證開頭第一個(gè)字母為E,便于與普通的Class區(qū)別開。
如:
EUserRole5、異常(Exception)的命名異常(Exception)通常采用字母e表示異常,對于自定義的異常類,其后綴必須為Exception如:
BusinessException6、方法(Method)的命名方法名是一個(gè)動(dòng)詞,采用大小寫混合的方式,第一個(gè)單詞的首字母小寫,其后單詞的首字母大寫。
方法名盡可能的描述出該方法的動(dòng)作行為。
返回類型為Boolean值的方法一般由is或has來開頭如:
getCurrentUser()、addUser()、hasAuthority()7、參數(shù)(Param)的命名第一個(gè)單詞的首字母小寫,其后單詞的首字母大寫。
參數(shù)量名不允許以下劃線或美元符號開頭,雖然這在語法上是允許的。
參數(shù)名應(yīng)簡短且富于描述。
如:
publicUserContextgetLoginUser(StringloginName);8、常量字段(Constants)的命名靜態(tài)常量字段(staticfinal)全部采用大寫字母,單詞之間用下劃線分隔;如:
publicstaticfinalLongFEEDBACK;publicstaticLongUSER_STATUS;1.風(fēng)格務(wù)必保持一貫性(Consistent)一位同胞頂著我的鼻子問,為什么我們的Java代碼縮進(jìn)格式非得是這樣,而不能是他那樣,他就是喜歡他自己的這一種,因此他寫的代碼總是用他自己習(xí)慣的風(fēng)格。
結(jié)果在CodeReview里被大家斃掉,責(zé)令修改。
因此他是大大地不服。
就是風(fēng)格一貫性問題。
其實(shí)他的風(fēng)格,本來也沒有什么問題,但在項(xiàng)目里,和其他程序員的程序的風(fēng)格,顯得扃異,那就存在問題了。
比如這個(gè)縮進(jìn),又比如變量命名方法,不同的類,不同的Methods里,各自不同,這程序就很難看了。
所以一旦你選擇了某種風(fēng)格,一定要貫徹始終。
如果一個(gè)項(xiàng)目里規(guī)定了一個(gè)風(fēng)格,即便很不符合你自己的習(xí)慣,也要貫徹始終,絕不應(yīng)該有標(biāo)新立異。
2.縮進(jìn)風(fēng)格(indent)既然是從縮進(jìn)說起,就先說說縮進(jìn)風(fēng)格;一般來說,象Java這樣的類C語言,都采用縮進(jìn)風(fēng)格。
而常用的,有四種A.KR風(fēng)格這是C程序最早的縮進(jìn)風(fēng)格,由C的發(fā)明者Ritchie和他的合作者Kernighan率先使用:
if(cond){body}其特點(diǎn),是大括號和if判斷在同一行。
通常,縮進(jìn)為8個(gè)空格或一個(gè)tab鍵,但在C++和Java里,也??s進(jìn)4個(gè)空格。
有人喜歡用兩個(gè)空格,竊以為不好,不明顯。
B.BSD風(fēng)格又稱AllmanStyle,源自UnixBSD程序員EricAllman--他為BSD寫過很多程序:
if(cond){body}特點(diǎn):
大括號和條件判斷分在兩行。
C.Whitesmith風(fēng)格這種風(fēng)格源于WhitesmithC:if(cond){body}D.GNU風(fēng)格這種風(fēng)格僅見于GNUEMACS的源程序中:
if(cond){body}那么在Java里用哪種好呢?建議只采用A或B。
SUN有一個(gè)JavaCodeNameConvention,建議的是A。
3.Tab還是空格(TabsvsSpace)還是縮進(jìn)問題。
那么一次縮進(jìn)應(yīng)該多大距離?是八個(gè)空格鍵,還是一個(gè)Tab鍵?Java有一個(gè)特點(diǎn),就是跨平臺性。
不過跨平臺指的是它的Class可以在不同平臺的虛擬機(jī)上運(yùn)行。
Java的源程序,有時(shí)候可不是跨平臺的。
什么?源程序還能不跨平臺?是的。
有次一個(gè)程序員送來一些Code,在我的環(huán)境里打開,程序難看得一塌糊涂,有該縮進(jìn)的地方,沒有縮進(jìn),有的則縮進(jìn)一大截,如同怪石一樣,嶙峋參差。
這樣的代碼質(zhì)量可不行!叫來程序員一問,答曰在他那里漂亮得很啊,他還專門花時(shí)間去美化它們了呢?原來他的縮進(jìn)沒有注意一個(gè)風(fēng)格,在有的地方用Tab鍵,有的地方打空格。
在一些不同的平臺上,Tab鍵的寬度可是不一樣的。
說道這里,相信大家比較清楚了,在縮進(jìn)的時(shí)候,盡量不用Tab,而是用空格。
好在許多編輯器,都可以把你的鍵盤上的Tab鍵定義成幾個(gè)空格。
趕緊去定義它!每次用多少空格呢?4個(gè)。
2個(gè)太少不明顯,8個(gè)太多占空間。
4.行寬說道8個(gè)空格鍵占空間,那么我一行有320列,8個(gè)空格算什么?打?。≌埣淖?,一行盡量不要超過80列。
許多終端一個(gè)屏幕只能顯示80列,為它們想想巴。
如果你的語句太長,想辦法折斷它,分幾列來寫。
5.變量命名SUNJavaCodeConvention里定義了Java里package,class,method和普通變量的命名規(guī)則,我就不用再浪費(fèi)字節(jié)了。
這里提提一些注意事項(xiàng)和一些SUN沒提到但大家常用的方式。
a.用有意義的名字命名變量首先,用完整的英語單詞或約定俗成的簡寫命名你的變量,如:
firstNamezipCode如果英語不夠好,至少用別人看得懂的拼音命名,如zhuZhi(住址)胡亂簡寫,或者胡亂命名,則沒有人看得懂你的變量的含義:
fnzczzb.常量用全大寫加下畫線命名Java里的常量,就是staticfinal:staticfinalSMTH_BBS=bbs.tsinghua.edu.cn;c.用復(fù)數(shù)命名collection類變量collection包括數(shù)組,vector等。
命名時(shí)請用復(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這里提供一個(gè)HungarianNotation的前綴命名習(xí)慣:
intibytebcharcdoubledfloatflongloffsetofflengthlenObjectoStrings(orstr)Arbitrayvaluev6.Java文件格式有許多方式定義你的文件語句格式,以下是一個(gè)例子:
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擴(kuò)充類(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)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 浙江農(nóng)林大學(xué)《體育統(tǒng)計(jì)學(xué)(含體育測量與評價(jià))》2023-2024學(xué)年第二學(xué)期期末試卷
- 《歸去來兮辭》教學(xué)設(shè)計(jì) 2023-2024學(xué)年統(tǒng)編版高中語文選擇性必修下冊
- 天津理工大學(xué)中環(huán)信息學(xué)院《有毒有害物質(zhì)檢測》2023-2024學(xué)年第二學(xué)期期末試卷
- 中國美術(shù)學(xué)院《財(cái)務(wù)信息系統(tǒng)》2023-2024學(xué)年第二學(xué)期期末試卷
- 西藏警官高等??茖W(xué)?!度襟w新聞評論》2023-2024學(xué)年第二學(xué)期期末試卷
- 大連科技學(xué)院《工程項(xiàng)目管理A》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣西工商職業(yè)技術(shù)學(xué)院《制藥分離工程》2023-2024學(xué)年第二學(xué)期期末試卷
- 重慶交通大學(xué)《會(huì)計(jì)信息系統(tǒng)(一)》2023-2024學(xué)年第二學(xué)期期末試卷
- 瀘州四川瀘州市國有土地上房屋征收補(bǔ)償中心(瀘州市物業(yè)管理中心)招聘編外人員筆試歷年參考題庫附帶答案詳解
- 泰州2025年江蘇泰州市第四人民醫(yī)院招聘合同制人員27人筆試歷年參考題庫附帶答案詳解
- 美團(tuán)外賣騎手服務(wù)合同(2025年度)
- 應(yīng)急預(yù)案解讀與實(shí)施
- 2025年春季學(xué)期團(tuán)委工作安排表
- 2025年《國有企業(yè)領(lǐng)導(dǎo)人員腐敗案例剖析》心得體會(huì)樣本(3篇)
- 廣告行業(yè)安全培訓(xùn)詳細(xì)介紹
- 2024-2029年全球及中國氨能源(綠氨)應(yīng)用可行性研究與投資戰(zhàn)略規(guī)劃分析報(bào)告
- 2025福南平市建武夷水務(wù)發(fā)展限公司招聘21人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025年上半年工業(yè)和信息化部裝備工業(yè)發(fā)展中心應(yīng)屆畢業(yè)生招聘(第二批)易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2025年中遠(yuǎn)海運(yùn)物流有限公司招聘筆試參考題庫含答案解析
- 2024年廣州市海珠區(qū)衛(wèi)生健康系統(tǒng)招聘事業(yè)單位工作人員筆試真題
- 一科一品一骨科護(hù)理
評論
0/150
提交評論