疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

8种常见的Java不规范代码


 

 1
   
    这个列表不区分顺序,全部来自一些代码质量检查工具,如 CheckStyle, FindBugs 和 PMD.
   
    在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;
   
    推荐
   
    1.if(age > 18){
   
    2.  return true;
   
    3.}else{
   
    4.  return false;
   
    5.}
   
    把方法的参数声明为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语句合并成一个:
   
    下面的代码
   
    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.}
   
    可以创建一个常量代替字符串“My Application”:
   
    1.public static final String MY_APP = “My Application”;
   
    2.private void someMethod(){
   
    3.  logger.log(MY_APP + e);
   
    4.  …
   
    5.  …
   
    6.  logger.log(MY_APP + f);
   
    7.}