09|TDD中的驱动(2):重构发挥了什么作用?

2022-03-29 徐昊
《徐昊·TDD 项目实战 70 讲》
课程介绍


讲述:徐昊

时长:大小5.67M


你好,我是徐昊。今天我们来继续讨论测试驱动开发中的驱动。
在上节课,我们讲了单元级别功能测试能够驱动其对应单元(功能上下文或变化点)的外在功能需求。但是当对应单元过大时,会带来一系列麻烦(比如测试构造困难、问题定位不准确等),那么就需要将对应单元的功能上下文继续分解成更小的粒度,然后通过测试来驱动实现。
从“驱动”的角度讲,TDD 并不是一种编码技术,它无法驱动你写出你不会实现的代码。TDD 是一种架构技术,它能通过测试与重构,驱动单元的划分以及功能的归属,因而是一种更为落地的架构软件的方式。
在 TDD 中,重构是和测试一样重要的驱动力,驱使我们得到更好的架构和更清晰的代码结构。因而熟练掌握几种常用的重构手法,也是十分必要的。

语义化的查找替换(Semantic Find and Replace)

首先要介绍的重构手法是提取方法(Extract Method)和内联方法(Inline Method)。这是最重要的两种重构手法,它们相当于查找(Find)/ 替换(Replace)。所不同的是...

展开全文
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。

精选留言

  • aoe
    2022-03-31
    非常惊喜的发现了一本关于软件架构非常重要的著作 Joshua Kerievsky 在 2004 年写过一本书,《Refactoring to Patterns》(中文版《重构与模式》)
    共 2 条评论
    1
  • 枫中的刀剑
    2022-03-30
    如果架构预先设计好了, 可以使用test double 技术来替换那些暂时你不需要实现或者不知道如何实现的类。等当前这个功能实现后在依次实现剩下已经划分好的功能,逐步替换就好了。

    作者回复: good

    
    1
  • Numbpad1
    2022-03-30
    换入参顺序,可以使用Refactor里面的Change Signature... ,只需要在弹窗里面移动顺序,是不需要手动替换的。

    作者回复: 对于某些语言 工具没有提供这个重构。我们讲的是最基本的自动化支持。

    
    1
  • 邓志国
    2022-03-30
    如果架构预先已经设计好了,那么TDD我觉得更简单:针对架构里面的接缝处找出适当的单元粒度编写测试并实现就好了。
    
    
  • Numbpad1
    2022-03-30
    ”这些手法如此基础,应该被看作修改代码的基本功,而不是重构:谈不上什么消除坏味道,就是高效修改代码而已。” 确实如此基础,据我观察,我身边很多用这IntelliJ IDEA的程序员,大部分都是不知道,更没办法熟练运用这些技巧的,也包括我。 还好订阅了这个专栏,学到这么多基本功,现在在项目中已经在慢慢练习老师所教授的技巧, 给我带来的一个最直观的感受就是,高效+减少手动修改带来的BUG。
    展开
    
    1