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

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

作者: 不将就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;
  }

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

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

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

相关文章

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

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

  • 常用工具类

    待整理 编码习惯之工具类规范Java 编程技巧之数据结构 概述 工具类的选择顺序:语言自带(java)>专用工具类...

  • 编码规范 - 工具类

    一个项目工具类是比不可少的,工具类可以为我们的业务提供最基础的支持,比如日期格式、文件操作、格式的转换等等。 但随...

  • Objective-C 编码规范

    目录 编码规范Chinamobo 编码规范补充代码规范注释前缀引入其他文件类中属性定义空行和空格 编码规范 Chi...

  • 码农的素养

    积累日常遇到的编码规范,良好的编码习惯,持续更新。。。 命名问题 编码时对类,方法,变量,常亮命名法应遵循:能直观...

  • Web 项目编码规范化工具

    Web 项目编码规范化工具 工具 ESLint The pluggable linting utility for...

  • 我的编码习惯 —— Controller规范

    今天来说说大家关注的AOP如何实现。 先说说Controller规范,主要的内容是就是接口定义里面的内容,你只要遵...

  • 我的编码习惯 —— 日志规范

    开发中日志这个问题,每个公司都强调,也制定了一大堆规范,但根据实际情况看,效果不是很明显,主要是这个东西不好测试和...

  • 前端开发文档规范

    HTML 编码规范 请查看HTML编码规范 CSS 编码规范 请查看CSS编码规范 JavaScript 编码规范...

  • 编码规范(一)越是建议的编码规范越会令团队纠结

    所属文章系列及序号:寻找尘封的银弹:编码规范(一) 我见过很多编码规范,例如C++编码规范、Java编码规范、C+...

网友评论

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

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