




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
,,,,,
,CodeReviewCheckList-Java,,,
,序號,分類,檢查項(xiàng),備注
,1,定義,每個(gè)Java文件只包含一個(gè)public類或者接口,
,2,,第一行非注釋的語句應(yīng)該為一個(gè)package語句(如果存在的話).之后應(yīng)該是import語句,
,3,布局,"一行不要超過120個(gè)字符,源代碼一般不會超過這個(gè)寬度,并導(dǎo)致無法完整顯示,但這一設(shè)置也可以靈活調(diào)整。在任何情況下,超長的語句應(yīng)該在一個(gè)逗號或者一個(gè)操作符后折行。一條語句折行后,應(yīng)該比原來的語句再縮進(jìn)4個(gè)字符。",
,4,,"一個(gè)表達(dá)式不能被放在一行中時(shí),將它分成多行例如:
foo(long_expression1,long_expression2,
long_expression3);",
,5,,函數(shù)代碼行數(shù)的限制:200行,
,6,,"左括號和后一個(gè)字符之間不應(yīng)該出現(xiàn)空格,同樣,右括號和前一個(gè)字符之間也不應(yīng)該出現(xiàn)空格。不要在語句中使用無意義的括號.括號只應(yīng)該為達(dá)到某種目的而出現(xiàn)在源代碼中。下面的例子說明錯(cuò)誤和正確的用法:
if((i)=42)//錯(cuò)誤-括號毫無意義
if(i==42)//正確-的確需要括號
",
,7,注釋,"所有的Java文件都應(yīng)該在類定義前編寫類注釋,注釋包括了類名,版本,日期和版權(quán)提示",
,8,,比較復(fù)雜的代碼段需要描述它的實(shí)現(xiàn)原理,且不要以直接翻譯代碼的形式描述。,
,9,,"恰當(dāng)?shù)氖褂盟姆N樣式的實(shí)現(xiàn)注釋:塊,單行,尾,和行尾注釋
例如:
塊注釋
/*
*Thisisablockcomment.
*Eachlineisprecededbyanasterisks.
*/
單行注釋
if(condition){
/*Shortdescriptionaboutthefollowingstatments*/
statements;
}
尾注釋
if(condition){
stateme;//注釋",
,10,,"每個(gè)聲明應(yīng)該單獨(dú)占一行并必須由一個(gè)尾注釋.使用tabs分隔開來數(shù)據(jù)類型,標(biāo)識符,和注釋字段例如:
intlevel;//indentationlevel
intsize;//sizeoftable
ObjectcurrentEntry;//currentlyselectedtableentry",
,11,命名慣例,"類名要簡單準(zhǔn)確.避免使用不易理解的縮寫詞和縮寫符,由名詞組成,每個(gè)單詞的第一個(gè)字母大寫,例如:StringBuffer,Vector。
建議在某寫特定類型的類名后加上該類型的說明,以便讓類的使用者一目了然。
例如:Applet——UnitDetachApplet
Servlet——UnitDetachServlet
Dialog——CardAssQueryDialog
",
,12,,接口名使用與類名一樣的單詞首字母大寫規(guī)則,
,13,,"方法名應(yīng)該為動詞或動詞短語,使用多個(gè)單詞場合的時(shí)候第一個(gè)單詞的第一個(gè)字母小寫,其他單詞的第一個(gè)字母大寫.例:
run();isUpperCase();getBackground();findTotalCost(intYears);",
,14,,"參數(shù)的名字必須和變量的命名規(guī)范一致。使用有意義的參數(shù)命名,如果可能的話,使用和要賦值的字段一樣的名字。例如:
publicvoidsetCounter(intsize)
{
this.size=size;
}
",
,15,,staticfinal基本類型常量名中的所有字母都應(yīng)該大寫(這樣便可標(biāo)志出它們屬于編譯期的常數(shù))。,
,16,,變量名的大小寫規(guī)則與方法名的大小寫規(guī)則相同,變量名應(yīng)該充分的反映出所定義變量的意義,由名詞組成,
,17,,"包的名字應(yīng)該都是由小寫單詞組成。它們?nèi)际切懽帜?,即便中間的單詞亦是如此。對于域名擴(kuò)展名稱,如com,org,net或者edu等,全部都應(yīng)小寫。
例如:packagecom.neusoft.unieap.ui;
包名必須能概括包內(nèi)所有成員類的共有特性。
建議:在多級包名中,下級包名不要重復(fù)包含上級包名的含義。
例如:有這樣一個(gè)包:com.neusoft.elarp.business.alteration.employeealteration,它的命名就不是十分合理,因?yàn)樵谌壈幸呀?jīng)聲明了alteration,所以在四級包名中就沒有必要重復(fù)定義它。合理的定義應(yīng)為com.neusoft.elarp.business.alteration.employee,這與多重路徑的命名規(guī)則是一樣的。
",
,18,編碼規(guī)則,禁止用一條語句對幾個(gè)變量賦值,
,19,,對于復(fù)雜的表達(dá)式使用圓括號表示它們之間的邏輯關(guān)系,
,20,,"boolean類型之間的變量或表達(dá)式禁止進(jìn)行比較,例如:
錯(cuò)誤:if(返回boolean類型的表達(dá)式==true)
正確:if(返回boolean類型的表達(dá)式)",
,21,,"import中禁止引入*的形式
保證所有引入的類都被使用。原因:如果不引入確切的類將很難理解當(dāng)前類的上下文關(guān)系及其相關(guān)性。
",
,22,,異常的捕獲形式:將連續(xù)的小的“try-catch”塊合并到一起。由于這些塊將代碼分割成小的、各自獨(dú)立的片斷,所以會妨礙編譯器進(jìn)行優(yōu)化。但是,若過份熱衷于刪除異常處理模塊,也可能造成代碼健壯程度的下降,所以在合并的同時(shí)需要考慮程序的穩(wěn)定性。,
,23,,"運(yùn)算語句的性能優(yōu)化:見下表(標(biāo)準(zhǔn)時(shí)間=語句執(zhí)行時(shí)間/本地賦值時(shí)間)
運(yùn)算示例標(biāo)準(zhǔn)時(shí)間
本地賦值i=n;1.0
實(shí)例賦值this.i=n;1.2
int增值i++;1.5
byte增值b++;2.0
short增值s++;2.0
float增值f++;2.0
double增值d++;2.0
空循環(huán)while(true)n++;2.0
三元表達(dá)式(x<0)?-x:x;2.2
算術(shù)調(diào)用Math.abs(x);2.5
數(shù)組賦值a[0]=n;2.7
Long增值l++;3.5
方法調(diào)用funct();5.9
Throw或者catch違例try{throwe;}320
同步方法調(diào)用synchMethod();570
新建對象newObject();980
新建數(shù)組newint[10];3100
",
,24,,"線程的使用:
1防止過多的同步
不必要的同步常常會造成程序性能的下降。因此,如果程序是單線程,則一定不要使用同步。
2避免同步整個(gè)代碼段
對某個(gè)方法或函數(shù)進(jìn)行同步比對整個(gè)代碼段進(jìn)行同步的性能要好。因?yàn)榇a段的同步牽涉的范圍比對某個(gè)方法或函數(shù)進(jìn)行同步廣。
3對每個(gè)對象使用多”鎖”的機(jī)制來增大并發(fā)
一般每個(gè)對象都只有一個(gè)”鎖”,這就表明如果兩個(gè)線程執(zhí)行一個(gè)對象的兩個(gè)不同的同步方法時(shí),會發(fā)生”死鎖”。即使這兩個(gè)方法并不共享任何資源。為了避免這個(gè)問題,可以對一個(gè)對象實(shí)行”多鎖”的機(jī)制。
",
,25,,"break:
遍歷數(shù)組、向量或者樹結(jié)構(gòu)時(shí),如果滿足條件的元素找到,一定要使用break語句退出循環(huán)。
",
,26,,"循環(huán)體內(nèi)避免構(gòu)建新對象:
如果在循環(huán)體內(nèi)用到新對象,需要在循環(huán)體開始以前構(gòu)建好該對象。由標(biāo)準(zhǔn)時(shí)間表可以看出構(gòu)建對象有很大的系統(tǒng)消耗,并且在一次循環(huán)中還要清除掉該對象,下次循環(huán)再重新構(gòu)建。",
,27,,數(shù)據(jù)庫連接、數(shù)據(jù)庫事務(wù)對象、輸入輸出流在使用后一定要關(guān)閉。,
,28,,異常的處理要全面,不要將影響到業(yè)務(wù)操作的異常拋給容器來處理。,
,29,,"靜態(tài)方法的使用:
錯(cuò)誤:
XXXFactoryf=newXXXFactory();
f.getXXX();
正確:
XXXFactory.getXXX();",
,30,,"循環(huán)語句的使用:
錯(cuò)誤:
for(inti=0;i<list.size();i++),list.si
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度汽車銷售折扣及售后服務(wù)合同
- 2025年度環(huán)保主題紀(jì)錄片制作及授權(quán)使用合同
- 中學(xué)生社會實(shí)踐感悟之旅的讀后感
- 施工總承包合同
- 農(nóng)產(chǎn)品品牌國際化與差異化發(fā)展戰(zhàn)略方案
- 人工智能輔助教育產(chǎn)品開發(fā)流程
- 企業(yè)員工福利管理信息系統(tǒng)采購合同
- 物聯(lián)網(wǎng)設(shè)備安全監(jiān)測協(xié)議
- 古詩文觀止的教學(xué)教案與文學(xué)評析
- 食品營養(yǎng)與健康管理試題集
- 西門子自動化培訓(xùn)
- T-IMAS 087-2024 托克托縣辣椒地方品種提純復(fù)壯技術(shù)規(guī)程
- 2025年全國道路運(yùn)輸企業(yè)安全管理人員考試題庫(含答案)
- 太陽能光伏發(fā)電安裝工程監(jiān)理實(shí)施細(xì)則
- 小學(xué)科學(xué)課件《水》
- 減鹽防控高血壓培訓(xùn)課件
- 全新版大學(xué)高階英語:綜合教程 第3冊 Unit 6 China Rejuvenated課件
- 2024年下半年江蘇省鹽城市射陽縣人民政府項(xiàng)目辦公室招聘易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 醫(yī)療行業(yè)信息安全等級保護(hù)
- 新公務(wù)員法培訓(xùn)講稿
- 用人部門面試官培訓(xùn)
評論
0/150
提交評論