我的编码习惯 - 工具类规范(笔记)

1、定义自己的工具类,尽量不要在业务代码里面直接调用第三方的工具类。

直接调用第三方工具类有两个不好的地方

不同的人会使用不同的第三方工具库,会比较乱。
将来万一要修改工具类的实现逻辑会很痛苦。

最佳实践

public static boolean isEmpty(CharSequence cs) {
        return org.apache.commons.lang3.StringUtils.isEmpty(cs);
    }

public void copyAttribute(Object source, Object dest) {
        org.springframework.beans.BeanUtils.copyProperties(source, dest);
    }

2、参数类型使用父类/接口
举例,假设我们写了一个判断arraylist是否为空的函数,一开始是这样的。

public static boolean isEmpty(ArrayList list) {
  return list == null || list.size() == 0;
}

我们看到我们只用了size方法,我们可以知道size方法再list接口上有,size方法再list的父类/接口Collection上也有,Collection没有父类/接口有size方法了,修改就结束了。

最佳实践

public static boolean isEmpty(Collection collection) {
  return collection == null || collection.size() == 0;
}

思路是抽象的思想,主要是修改参数类型,方法就是往上找父类/接口,一直找到顶为止,记得修改参数名。

3、使用重载编写衍生函数组
举例,现在需要编写一个方法,输入是一个utf-8格式的文件的文件名,把里面内容输出到一个list。我们刚刚开始编写的时候,是这个样子的

public static List readFile2List(String filename) throws IOException {
  List list = new ArrayList();

  File file = new File(filename);

  FileInputStream fileInputStream = new FileInputStream(file);

  BufferedReader br = new BufferedReader(new InputStreamReader(fileInputStream, 
     "UTF-8"));

  // XXX操作

  return list;
}

最佳实践

private static final String DEFAULT_CHARSET = "UTF-8";

  public static List readFile2List(String filename) throws IOException {
    return readFile2List(filename, DEFAULT_CHARSET);
  }

  public static List readFile2List(String filename, String charset)
    throws IOException {
    FileInputStream fileInputStream = new FileInputStream(filename);
    return readFile2List(fileInputStream, charset);
  }

  public static List readFile2List(File file) throws IOException {
    return readFile2List(file, DEFAULT_CHARSET);
  }

  public static List readFile2List(File file, String charset)
    throws IOException {
    FileInputStream fileInputStream = new FileInputStream(file);
    return readFile2List(fileInputStream, charset);
  }

  public static List readFile2List(InputStream fileInputStream)
    throws IOException {
    return readFile2List(fileInputStream, DEFAULT_CHARSET);
  }

  public static List readFile2List(InputStream inputStream, String charset)
    throws IOException {
    List list = new ArrayList();

    BufferedReader br = null;
    try {
      br = new BufferedReader(new InputStreamReader(inputStream, charset));

      String s = null;
      while ((s = br.readLine()) != null) {
        list.add(s);
      }
    } finally {
      IOUtils.closeQuietly(br);
    }

    return list;
  }

关键点,多想一步,根据参数变化编写各种类型的入参函数,需要保证函数主要代码只有一份。

总之编写工具类的时候需要注意参数的优化

原文链接
我的编码习惯 - 工具类规范

你可能感兴趣的:(我的编码习惯 - 工具类规范(笔记))