首页 > 其他 > 详细

如何重构

时间:2020-03-01 00:53:57      阅读:91      评论:0      收藏:0      [点我收藏+]

基于接口而非实现编程,主要的目的是灵活的替换实现类。同样是生成ID的方法,针对日志ID、用户ID、订单ID,这三个完全是三个不同的业务,所以不存在相互替换的场景,所以在实现类命名上 LogTraceIdGenerator、UserIdGenerator、OrderIdGenerator这三种命名方式就不合理了。

好的一种命名方式是,我们抽象出两个接口(不以业务场景为区分,以功能实现不同做区分),一个是 IdGenerator,一个是 LogTraceIdGenerator,LogTraceIdGenerator 继承 IdGenerator。实现类实现接口 IdGenerator,命名为 RandomIdGenerator、SequenceIdGenerator 等。这样,实现类可以复用到多个业务模块中,比如前面提到的用户、订单。

代码或函数依赖一个对象,且这个对象参与逻辑执行(依赖这个对象的输出)但又不可控,这时可以使用依赖注入的方式提高代码的可测试性(依赖注入方便mock)。

关于单测:

  • 需要测试的是函数定义的功能,而不是具体的实现。即使函数实现逻辑改变了,单元测试用例应该仍然有效可用。
  • 单元测试如何写,主要是看函数是如何定义的。不同的定义,需要测试的点也不同。

如何重构

原文:https://www.cnblogs.com/Utah-Lee/p/12387279.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!