8 边界


目标:将外来代码干净利落地整合进自己的代码中

使用第三方代码

Map<Sensor> sensors = new HashMap<>();
...
Sensor s = sensors.get(sensorId);
public class Sensors {
	// sensors 用户不必关心是否使用了泛型 那将是实现细节才关心的
	private Map sensors = new HashMap();

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

Map 的使用应该是上述的方式 但并不建议总是以这种方式封装 Map 的使用
建议不要将在边界接口(如上述 Map 接口)直接在系统中传递(避免从公共 API 中返回边界接口 或 将边界接口作为参数传递给公共 API)
原因:如果不稍加注意 生态内代码调用API 处会出现大量的不整洁代码 在专门的类中进行转化再使用 只在一出进行不整洁转化 不要到处调用到处需要转化
解决:如果使用边界接口 就把它保留在类或亲近类中 将不整洁代码封装起来 不要让这种不整洁到处出现

如何浏览和学习边界

学习性测试:不学习第三方代码 不整合第三方代码 不在生产代码中试验新东西 而是编写测试来遍览和理解第三方代码
如在应用中那样调用第三方代码 通过核对试验来检测自己对那个 API 的理解程度 测试聚焦于想从 API 得到的东西

学习性测试示例

  1. 阅读介绍文档
  2. 编写用例
  3. 调试(搜索——阅读——测试)

学习性测试的好处

  • 无成本 只付出最少必要精力 总要有一系列与生产代码中调用方式一致的输出测试来支持整洁的边界
  • 随时测试兼容 如第三方程序包版本更新 即可运行学习性测试 看是否兼容
  • 精确试验

使用尚不存在的代码

事先定义自己使用的接口 在我们的控制之下 有助于保持客户代码更可读 且集中完成它该完成的工作
等三方 API 出来后 再使用适配器跨接 封装与 API 的互动 提供一个当 API 发生变动时唯一需要改动的地方
边界解耦

整洁的边界

目的:当三方有变动时可以减少修改点
边界代码需要清晰的分隔 定义了期望的测试 避免因过多了解三方代码特定信息而产生依赖(解耦

通过代码少数几处引用第三方边界位置来管理三方边界 在边界两边推动内部一致

  • 类转换:像对待 Map 那样封装
  • 接口转换:使用 Adapter 模式转换三方接口
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

帅气呢杰哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值