Java不规范代码小结


在Eclipse中格式化源代码并管理import语句

  Eclipse提供了自动格式化源代码和管理import语句的功能(并移除未使用的语句)。你可以使用下面的快捷键来使用这些功能。

  Ctrl + Shift + F – 格式化源代码。

  Ctrl + Shift + O – 管理import语句并移除未使用的语句。

   除了手动执行这两个功能外,你还可以让Eclipse在保存文件的时候自动格式化源代码并自动管理import语句。要做到这个,在Eclipse中, 到 Window -> Preferences -> Java -> Editor -> Save Actions并启用 Perform the selected actions on save,选中 Format source code和 organize imports。

  避免在方法中出现多个return语句(退出点):

  在你的方法中,确保只有一个 退出点。不要在一个方法中使用多于一个return语句。

  如,下面的代码是 不推荐的,因为它有多个退出点(return语句)。

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.   return age > 18;   

3. } 不要为Boolean,Integer或String创建新的实例: 

  避免创建新的Boolean,Integer,String等实例。使用Boolean.valueOf(true)代替new Boolean(true)。两种写法效果差不多但却可以改善性能。

  在代码块周围使用大括号:

  永远不要忘记在块类型语句(如:if,for,while)周围使用大括号。这可以减少代码歧义并且避免在你修改代码块的时候产生新的bug。

  不推荐

 

1. if(age > 18)  

2.   return true;   

3. else  

4.   return false

  推荐

 

5. if(age > 18){  

6.   return true;   

7. }else{   

8.   return false;   

9. }

  把方法的参数声明为final类型:

  总是在所有兼容的地方把把方法的参数声明为final。这样做的话,当你无意中修改了参数的值,编译时会得到警告,并且编译生成的字节码也会得到优化。

  推荐

 

private boolean isEligible(final int age){ ... }

  用大写命名public static final类型成员变量:

  总是使用大写命名用public static final类型变量。这样可以让你很容易区分常量和本地变量。

  不推荐

 

public static final String testAccountNo = "12345678";

  推荐

 

public static final String TEST_ACCOUNT_NO = "12345678";

  把多个if语句合并成一个:

  下面的代码

 

10. if(age > 18){  

11.   if( voted == false){   

12.     // eligible to vote.   

13.   }  

14. }

  可以使用一个if语句改写为:

 

15. if(age > 18 && !voted){  

16.   // eligible to vote   

17. }

  别忘了给switch添加default语句:

  总是给switch添加一个default语句。

  避免重复使用同样的字符串,创建一个常量吧:

  如果你需要在多个地方使用同一个字符串,那就创建一个字符串常量来使用吧。

  下面的代码:

 

18. private void someMethod(){  

19.   logger.log("My Application" + e);   

20.   ....  

21.   ....  

22.   logger.log("My Application" + f);   

23. }

  可以创建一个常量代替字符串"My Application":

 

24. public static final String MY_APP = "My Application";  

25. private void someMethod(){   

26.   logger.log(MY_APP + e);  

27.   ....  

28.   ....  

29.   logger.log(MY_APP + f);  

30. }