美文网首页
我的编码习惯 - 工具类规范(笔记)

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

作者: 不将就51y | 来源:发表于2017-12-26 20:50 被阅读0次

    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<String>。我们刚刚开始编写的时候,是这个样子的

    public static List<String> readFile2List(String filename) throws IOException {
      List<String> list = new ArrayList<String>();
    
      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<String> readFile2List(String filename) throws IOException {
        return readFile2List(filename, DEFAULT_CHARSET);
      }
    
      public static List<String> readFile2List(String filename, String charset)
        throws IOException {
        FileInputStream fileInputStream = new FileInputStream(filename);
        return readFile2List(fileInputStream, charset);
      }
    
      public static List<String> readFile2List(File file) throws IOException {
        return readFile2List(file, DEFAULT_CHARSET);
      }
    
      public static List<String> readFile2List(File file, String charset)
        throws IOException {
        FileInputStream fileInputStream = new FileInputStream(file);
        return readFile2List(fileInputStream, charset);
      }
    
      public static List<String> readFile2List(InputStream fileInputStream)
        throws IOException {
        return readFile2List(fileInputStream, DEFAULT_CHARSET);
      }
    
      public static List<String> readFile2List(InputStream inputStream, String charset)
        throws IOException {
        List<String> list = new ArrayList<String>();
    
        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;
      }
    

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

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

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

    相关文章

      网友评论

          本文标题:我的编码习惯 - 工具类规范(笔记)

          本文链接:https://www.haomeiwen.com/subject/olregxtx.html