>
學(xué)校機(jī)構(gòu) >
廣西南寧達(dá)內(nèi)軟件科技有限公司 >
學(xué)習(xí)資訊>
分析總結(jié)Java中常見的違規(guī)編碼
分析總結(jié)Java中常見的違規(guī)編碼
55 2017-04-14
一、Eclipse編譯器提供源代碼格式輸入
Eclipse提供自動(dòng)源碼格式選項(xiàng),并且組織輸入(刪除未使用的代碼)。你可以使用下面的這些快捷鍵進(jìn)行操作。
Ctrl+Shift+F--源代碼格式
Ctrl+Shift+O--組織輸入并刪除未使用的代碼
代替手動(dòng)調(diào)用這兩個(gè)函數(shù),只需根據(jù)Eclipse自動(dòng)格式和自動(dòng)組織選項(xiàng),可以隨時(shí)保存文件。
操作步驟,在Eclipse中進(jìn)入Window->Preferences->Java->Editor->SaveActions,然后以選定的方式保存,最后檢查Formatsourcecode+Organizeimports.
二、避免多個(gè)返回(退出點(diǎn))
依照你的方法,確保只有一個(gè)退出點(diǎn)。不要在同一個(gè)地方或多個(gè)地方使用返回。比如,下面的代碼,NOTRECOMMENDED(不建議),這是因?yàn)橛卸鄠€(gè)退出點(diǎn)(返回語句)。
1.privatebooleanisEligible(intage){
2.if(age>18){
3.returntrue;
4.}else{
5.returnfalse;
6.}
7.}
下面的代碼有所提升,這是更高版本的。
1.privatebooleanisEligible(intage){
2.booleanresult;
3.if(age>18){
4.result=true;
5.}else{
6.result=false;
7.}
8.returnresult;
9.}
三、簡化if-else
我寫了幾個(gè)實(shí)用的方法作為參考,檢查語句條件并且基于該條件返回值。比如,考慮到isEligible方法,正如你之前所看到的:
1.privatebooleanisEligible(intage){
2.booleanresult;
3.if(age>18){
4.result=true;
5.}else{
6.result=false;
7.}
8.returnresult;
9.}
整個(gè)方法以一個(gè)單一的return語句重新編寫:
1.privatebooleanisEligible(intage){
2.3.returnage>18;
4.5.}
四、不要給Boolean,Integer或者String創(chuàng)建新的實(shí)例
避免給Boolean,Integer,String創(chuàng)建新的實(shí)例。比如,使用newBoolean(true),Boolean,valueOf(true)。修改后的語句與之前的效果基本相同,除了在性能上有所提升。
五、使用大括號(hào)模塊語句
永遠(yuǎn)別忘了使用大括號(hào)模塊語句比如if、for、while.這樣做的好處是當(dāng)你在修改模塊級(jí)語句時(shí)減少了模糊代碼并且避免引進(jìn)bug的機(jī)會(huì)。
不建議:
1.if(age>18)
2.result=true;
3.else
4.result=false;
建議:
1.if(age>18){
2.result=true;
3.}else{
4.result=false;
5.}
六、以final類型標(biāo)記方法參數(shù),任何時(shí)候都適用
請記住,以final類型標(biāo)記方法參數(shù),任何時(shí)候都適用。這樣做的好處在于當(dāng)你不小心修改參數(shù)值時(shí),編譯器會(huì)給你警告,同時(shí)它還能以更好的方式優(yōu)化編譯器代碼字節(jié)。
建議:
privatebooleanisEligible(finalintage){…}
七、在UPPERCASE中命名publicstaticfinal字段
在UPPERCASE中命名publicstaticfinal字段(通常也被稱之為常量)。這個(gè)可以讓你輕松區(qū)分常量字段和局部變量之間的不同。
不建議:
publicstaticfinalStringtestAccountNo="";
建議:
publicstaticfinalStringTEST_ACCOUNT_NO="";,
八、組合成單一的if語句
在盡可能多的情況下,把多個(gè)if語句組合成單一的if語句,比如下面的代碼:
1.if(age>18){
2.if(voted==false){
3.//eligibletovote.
4.}
5.}
合并成單一的if語句:
1.if(age>18&&!voted){
2.//eligibletovote
3.}
九、Switch應(yīng)該有default
始終給Switch語句添加default.
十、使用常量來避免重復(fù)定義相同的字符串值
如果你在多個(gè)地方必須使用字符串,那么使用常量來避免重復(fù)定義擁有相同值的字符串。
比如,看下面的代碼:
1.privatevoidsomeMethod(){
2.logger.log("MyApplication"+e);
3.…
4.…
5.logger.log("MyApplication"+f);
6.}
stringliteral"我的應(yīng)用"可以作為常量并且能在代碼中使用。
1.publicstaticfinalStringMY_APP="MyApplication";
2.
3.privatevoidsomeMethod(){
4.logger.log(MY_APP+e);
5.…
6.…
7.logger.log(MY_APP+f);
8.}
掃一掃
獲取更多福利
獵學(xué)網(wǎng)企業(yè)微信
獵學(xué)網(wǎng)訂閱號(hào)
獵學(xué)網(wǎng)服務(wù)號(hào)