分析總結Java中常見的違規編碼
一、Eclipse編譯器提供原始碼格式輸入
Eclipse提供自動原始碼格式選項,並且組織輸入(刪除未使用的程式碼)。你可以使用下面的這些快捷鍵進行操作。
Ctrl + Shift + F--原始碼格式
Ctrl + Shift + O--組織輸入並刪除未使用的程式碼
代替手動呼叫這兩個函式,只需根據Eclipse自動格式和自動組織選項,可以隨時儲存檔案。
操作步驟,在Eclipse中進入Window -> Preferences -> Java -> Editor -> Save Actions,然後以選定的方式儲存,最後檢查Format source code + Organize imports.
二、避免多個返回(退出點)
依照你的方法,確保只有一個退出點。不要在同一個地方或多個地方使用返回。比如,下面的程式碼,NOT RECOMMENDED(不建議),這是因為有多個退出點(返回語句)。
1.private boolean isEligible(int age){
2. if(age > 18){
3. return true;
4. }else{
5. return false;
6. }
7.}
下面的程式碼有所提升,這是更高版本的。
1.private boolean isEligible(int age){
2. boolean result;
3. if(age > 18){
4. result = true;
5. }else{
6. result = false;
7. }
8. return result;
9.}
三、簡化if-else
我寫了幾個實用的方法作為參考,檢查語句條件並且基於該條件返回值。比如,考慮到isEligible方法,正如你之前所看到的:
1.private boolean isEligible(int age){
2. boolean result;
3. if(age > 18){
4. result = true;
5. }else{
6. result = false;
7. }
8. return result;
9.}
整個方法以一個單一的return語句重新編寫:
1.private boolean isEligible(int age){
2.3.return age > 18;
4.5.}
四、不要給Boolean, Integer或者String建立新的例項
避免給Boolean,Integer,String建立新的例項。比如,使用new Boolean(true),Boolean,valueOf(true)。修改後的語句與之前的效果基本相同,除了在效能上有所提升。
五、使用大括號模組語句
永遠別忘了使用大括號模組語句比如if、for、while.這樣做的好處是當你在修改模組級語句時減少了模糊程式碼並且避免引進bug的機會。
不建議:
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型別標記方法引數,任何時候都適用
請記住,以final型別標記方法引數,任何時候都適用。這樣做的好處在於當你不小心修改引數值時,編譯器會給你警告,同時它還能以更好的方式優化編譯器程式碼位元組。
建議:
private boolean isEligible(final int age){ … }
七、在UPPERCASE中命名public static final欄位
在UPPERCASE中命名public static final欄位(通常也被稱之為常量)。這個可以讓你輕鬆區分常量欄位和區域性變數之間的不同。
不建議:
public static final String testAccountNo = "12345678";
建議:
public static final String TEST_ACCOUNT_NO = "12345678";,
八、組合成單一的if語句
在儘可能多的情況下,把多個if語句組合成單一的if語句,比如下面的程式碼:
1.if(age > 18){
2. if( voted == false){
3. // eligible to vote.
4. }
5.}
合併成單一的if語句:
1.if(age > 18 && !voted){
2. // eligible to vote
3.}
九、Switch應該有default
始終給Switch語句新增default.
十、使用常量來避免重複定義相同的字串值
如果你在多個地方必須使用字串,那麼使用常量來避免重複定義擁有相同值的字串。
比如,看下面的程式碼:
1.private void someMethod(){
2. logger.log("My Application" + e);
3. …
4. …
5. logger.log("My Application" + f);
6.}
string literal"我的應用"可以作為常量並且能在程式碼中使用。
1.public static final String MY_APP = "My Application";
2.
3.private void someMethod(){
4. logger.log(MY_APP + e);
5. …
6. …
7. logger.log(MY_APP + f);
8.}