整洁代码之道 8 边界

介绍一些保持软件边界(和其他接口对接的界限)整洁的实践手段和技巧

8.1 使用第三方代码

  1. 第三方程序包和框架提供者追求 普适性 ,这样就能在多环境中工作,吸引广泛的用户
  2. 使用者则想要集中满足特定需求接口
  3. 接口提供方和接口使用方在期望值上的差异,就会导致系统在边界上出现问题

8.1.1 举一个 Map 的例子

  1. java.util.Map 是 Java 提供的一个接口和功能都很丰富的对象
  2. 但是当我们通过 Map 进行内容传递时,如果想要禁止调用者删除里面存入的数据,却很难做到
  3. 因为 Map 的 clear() 方法是对外公开的,任何调用者都可以直接使用
  4. 除非通过以下方式将 Map 获取数据的方式进行封装
public class Sensors {
  private Map sensors = new HashMap();

  public Sensor getById(String id) {
    return (Sensor) sensors.get(id);
  }
}

8.2 浏览和学习边界

  1. 在接入第三方代码时,不要在生产代码中直接接入
  2. 应该先编写测试来遍览和理解第三方代码,这种方式叫 学习性测试( Learning Tests )

8.3 学习 log4j

  1. 使用标准的日志工具类来操作系统日志,是构建项目的不二之选

8.4 学习性测试的好处不只是免费

  1. 当需要接入第三方接口时,不论如何都无法避免去学习其中的 APi
  2. 而编写测试则是获得这些知识的 即容易,又不会影响其他工作 的途径
  3. 而且,当第三方程序包发布了新版本,可以通过之前编写的学习性测试看看程序包的行为是否发生改变

8.5 使用尚不存在的代码

  1. 如果系统的部分边界是需要和其他项目对接
  2. 提前编写我们想要得到的接口,有助于保持客户代码高可读性
  3. 例如现在盛行的前后分离项目,前后端工程师先说出各自对接口的期望,然后同步开发,前端工程师通常会使用 mock.js 工具进行接口模拟

8.6 整洁的边界

  1. 良好的软件设计,后期无需巨大投入和重写即可对系统进行修改
  2. 而整洁的边界有助于将系统本身和第三方代码分割开来,当后期需要替换时工作量就更小
发布了418 篇原创文章 · 获赞 47 · 访问量 20万+

猜你喜欢

转载自blog.csdn.net/asing1elife/article/details/102874077