基础篇——代码优化100条之(11—20)

11、使用try-with-resources替代原来的try-catch-finally,自动关闭相关资源

/**
     * 使用try-with-resources语句替代原来的try-catch-finally,能保证资源关闭
     */
    //反例
    @Test
    public void testFalse11(String fileName){
        BufferedReader br = null;
        StringBuilder sb = new StringBuilder();
        try{
            String line;
            br = new BufferedReader(new FileReader(fileName));
            while((line = br.readLine()) != null){
                sb.append(line);
            }
            System.out.println(sb);
        }catch (Exception e) {
            System.out.println(e.getMessage());
        } finally {
            if (br != null) {
                try{
                    br.close();
                }catch (IOException ioe) {
                    System.out.println(ioe.getMessage());
                }
            }
        }
    }
    //正例
    @Test
    public void testTrue11(String fileName){
        StringBuilder sb = new StringBuilder();
        try(BufferedReader br = new BufferedReader(new FileReader(fileName))){
            String line;
            while((line = br.readLine()) != null){
                sb.append(line);
            }
            System.out.println(sb);
        }catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }

12、删除未使用的方法和字段

13、删除未使用的局部变量

14、删除未使用的方法参数

15、删除表达式的多余括号

16、工具类应该屏蔽构造函数

package com.zzb.test.admin;

/**
 * 工具类是一堆静态字段和函数的集合,不应该被实例化。但是,Java为每个没有明确定义构造函数的类添加了一个隐式
 * 公有构造函数。所以,应该重新定义私有构造函数
 * Created by zzb on 2019/12/18 13:23
 */
public class TestUtils {

    private TestUtils(){}
}

17、删除多余的异常捕获抛出

/**
     * 用catch语句捕获异常后,什么也不进行处理,就让异常重新抛出,这跟不捕获异常的效果一样
     * 可以删除这些代码或者添加处理
     */
    //反例
    @Test
    public void testFalse17(String fileName) throws Exception{
        StringBuilder sb = new StringBuilder();
        try(BufferedReader br = new BufferedReader(new FileReader(fileName))){
            String line;
            while((line = br.readLine()) != null){
                sb.append(line);
            }
            System.out.println(sb);
        }catch (Exception e) {
            throw e;
        }
    }
    //正例
    @Test
    public void testTure17(String fileName) throws Exception{
        StringBuilder sb = new StringBuilder();
        try(BufferedReader br = new BufferedReader(new FileReader(fileName))){
            String line;
            while((line = br.readLine()) != null){
                sb.append(line);
            }
            System.out.println(sb);
        }
    }

18、公有静态常量应该通过类直接访问

19、不要使用NullPointerException判断空

20、使用String.valueOf(value)代替“”+value

posted @ 2019-12-18 14:08  不浪小生  阅读(356)  评论(0编辑  收藏  举报