大师领路,带你重构TDD技能

*   01 开篇词/

  *   01 开篇词|为什么TDD是当前最具工程效能的研发流程.html (0.93 MB)

  *   02 课前必读01|20年前的“老古董”技术,为什么还值得开个课.html (0.51 MB)

  *   02 课前必读01|20年前的“老古董”技术,为什么还值得开个课.mp3 (9.13 MB)

  *   03 课前必读02|程序员究竟是搞技术的,还是做工程的.html (0.72 MB)

  *   03 课前必读02|程序员究竟是搞技术的,还是做工程的.mp3 (18.34 MB)

*   02 实战项目一|命令行参数解析/

  *   01 01|TDD演示(1):任务分解法与整体工作流程.html (0.76 MB)

  *   02 02|TDD演示(2):识别坏味道与代码重构.html (0.18 MB)

  *   02 02|TDD演示(2):识别坏味道与代码重构.mp3 (4.79 MB)

  *   03 03|TDD演示(3):按测试策略重组测试.html (0.86 MB)

  *   03 03|TDD演示(3):按测试策略重组测试.mp3 (5.98 MB)

  *   04 04|TDD演示(4):实现对于列表参数的支持.html (0.06 MB)

  *   04 04|TDD演示(4):实现对于列表参数的支持.mp3 (6.55 MB)

  *   05 05|TDD中的测试(1):状态验证为什么是主要的使用方式.html (1.10 MB)

  *   05 05|TDD中的测试(1):状态验证为什么是主要的使用方式.mp3 (7.15 MB)

  *   06 06|TDD中的测试(2):行为验证为什么应该尽量避免使用.html (0.65 MB)

  *   06 06|TDD中的测试(2):行为验证为什么应该尽量避免使用.mp3 (8.77 MB)

  *   07 07|TDD中的测试(3):集成测试还是单元测试.html (0.59 MB)

  *   07 07|TDD中的测试(3):集成测试还是单元测试.mp3 (7.67 MB)

  *   08 08|TDD中的驱动(1):驱动的极限是什么.html (0.69 MB)

  *   08 08|TDD中的驱动(1):驱动的极限是什么.mp3 (6.65 MB)

  *   09 09|TDD中的驱动(2):重构发挥了什么作用.html (0.33 MB)

  *   09 09|TDD中的驱动(2):重构发挥了什么作用.mp3 (5.67 MB)

  *   10 10|TDD中的驱动(3):何为经典学派何为伦敦学派.html (0.52 MB)

  *   10 10|TDD中的驱动(3):何为经典学派何为伦敦学派.mp3 (5.04 MB)

  *   11 11|作为工程化方法的TDD:更低的成本与更高的效能.html (2.02 MB)

  *   11 11|作为工程化方法的TDD:更低的成本与更高的效能.mp3 (8.24 MB)

*   03 TDD首发代码评点/

  *   01 代码评点01|不同语言TDD的节奏有何不同.html (0.86 MB)

  *   01 代码评点01|不同语言TDD的节奏有何不同.mp3 (1.75 MB)

  *   02 代码评点02|什么是合适TDD的语言和IDE.html (0.10 MB)

  *   02 代码评点02|什么是合适TDD的语言和IDE.mp3 (2.00 MB)

*   04 实战项目二|RESTful开发框架:依赖注入容器/

  *   01 12|实战中的TDD:RESTful API的开发框架.html (0.29 MB)

  *   01 12|实战中的TDD:RESTful API的开发框架.mp3 (2.61 MB)

  *   02 13 |DI Container(1):如何实现基本的DI容器结构.html (0.69 MB)

  *   02 13 |DI Container(1):如何实现基本的DI容器结构.mp3 (2.11 MB)

  *   03 14|DI Container(2):如何通过Sad Path为容器增加功能.html (0.80 MB)

  *   03 14|DI Container(2):如何通过Sad Path为容器增加功能.mp3 (1.13 MB)

  *   04 15|DI Container(3):如何重构已有的代码.html (0.14 MB)

  *   04 15|DI Container(3):如何重构已有的代码.mp3 (1.26 MB)

  *   05 16|DI Container(4):如何实现对循环依赖的处理.html (2.10 MB)

  *   05 16|DI Container(4):如何实现对循环依赖的处理.mp3 (1.87 MB)

  *   06 17|DI Container(5):API接口该怎么设计.html (1.81 MB)

  *   06 17|DI Container(5):API接口该怎么设计.mp3 (1.58 MB)

  *   07 18|DI Container(6):如何实现循环依赖的检查.html (1.88 MB)

  *   07 18|DI Container(6):如何实现循环依赖的检查.mp3 (1.91 MB)

  *   08 19|DI Container(7):如何实现Field Injection部分的功能.html (0.45 MB)

  *   08 19|DI Container(7):如何实现Field Injection部分的功能.mp3 (1.32 MB)

  *   09 20|DI Container(8):如何实现Method Injection部分的功能.html (0.51 MB)

  *   09 20|DI Container(8):如何实现Method Injection部分的功能.mp3 (0.83 MB)

  *   10 21|DI Container(9):怎样重构测试代码.html (0.37 MB)

  *   10 21|DI Container(9):怎样重构测试代码.mp3 (1.47 MB)

  *   11 22|DI Container(10):怎样将大粒度的测试重构为等效的小粒度测试代码.html (0.07 MB)

  *   11 22|DI Container(10):怎样将大粒度的测试重构为等效的小粒度测试代码.mp3 (1.30 MB)

  *   12 23|DI Container(11):如何对ContainerTest进行文档化改造.html (0.08 MB)

  *   12 23|DI Container(11):如何对ContainerTest进行文档化改造.mp3 (1.12 MB)

  *   13 24|DI Container(12):如何增补功能.html (0.11 MB)

  *   13 24|DI Container(12):如何增补功能.mp3 (1.43 MB)

  *   14 25|DI Container(13):任务上的遗漏该怎么处理.html (0.24 MB)

  *   14 25|DI Container(13):任务上的遗漏该怎么处理.mp3 (0.95 MB)

  *   15 26|DI Container(14):如何重构对Type类型判断的逻辑.html (0.61 MB)

  *   15 26|DI Container(14):如何重构对Type类型判断的逻辑.mp3 (1.35 MB)

  *   16 27|DI Container(15):如何封装类型判断逻辑.html (0.35 MB)

  *   16 27|DI Container(15):如何封装类型判断逻辑.mp3 (1.12 MB)

  *   17 28|DI Container(16):行为封装会对测试产生什么影响.html (0.64 MB)

  *   17 28|DI Container(16):行为封装会对测试产生什么影响.mp3 (0.97 MB)

  *   18 29|DI Container(17):如何重构ContextConfig内部的实现.html (0.42 MB)

  *   18 29|DI Container(17):如何重构ContextConfig内部的实现.mp3 (1.33 MB)

  *   19 30|DI Container(18):如何增补依赖缺失和循环依赖的测试.html (0.43 MB)

  *   19 30|DI Container(18):如何增补依赖缺失和循环依赖的测试.mp3 (1.63 MB)

  *   20 31|DI Container(19):Qualifier部分的功能要如何完成.html (0.58 MB)

  *   20 31|DI Container(19):Qualifier部分的功能要如何完成.mp3 (1.30 MB)

  *   21 32|DI Container(20):如何对代码和测试进行重构.html (0.48 MB)

  *   21 32|DI Container(20):如何对代码和测试进行重构.mp3 (2.06 MB)

  *   22 33|DI Container(21):如何处理Singleton生命周期部分的功能.html (0.20 MB)

  *   22 33|DI Container(21):如何处理Singleton生命周期部分的功能.mp3 (1.35 MB)

  *   23 34|DI Container(22):如何对Bind的逻辑进行重构.html (0.15 MB)

  *   23 34|DI Container(22):如何对Bind的逻辑进行重构.mp3 (1.26 MB)

  *   24 35|DI Container(23):项目回顾与总结.html (1.57 MB)

  *   24 35|DI Container(23):项目回顾与总结.mp3 (4.27 MB)

*   05 实战项目三|RESTful Web Services/

  *   01 36|实战中的TDD:RESTful Web Services.html (0.09 MB)

  *   01 36|实战中的TDD:RESTful Web Services.mp3 (1.67 MB)

  *   02 37|RESTful Web Services(1):明确架构愿景与架构组件间的交互.html (2.00 MB)

  *   02 37|RESTful Web Services(1):明确架构愿景与架构组件间的交互.mp3 (5.26 MB)

  *   03 38|RESTful Web Services(2):根据Spike的结果,要如何调整架构愿景.html (0.62 MB)

  *   03 38|RESTful Web Services(2):根据Spike的结果,要如何调整架构愿景.mp3 (1.51 MB)

  *   04 39|RESTful Web Services(3):明确架构愿景与调用栈顺序.html (1.28 MB)

  *   04 39|RESTful Web Services(3):明确架构愿景与调用栈顺序.mp3 (1.59 MB)

  *   05 40|RESTful Web Services(4):在当前架构愿景下,要如何分解任务.html (3.15 MB)

  *   05 40|RESTful Web Services(4):在当前架构愿景下,要如何分解任务.mp3 (4.29 MB)

  *   06 41|RESTful Web Services(5):如何通过对数据测试的管理来凸显意图.html (1.17 MB)

  *   06 41|RESTful Web Services(5):如何通过对数据测试的管理来凸显意图.mp3 (1.51 MB)

  *   07 42|RESTful Web Services(6):如何处理JAX-RS定义的异常类.html (1.07 MB)

  *   07 42|RESTful Web Services(6):如何处理JAX-RS定义的异常类.mp3 (1.16 MB)

  *   08 43|RESTful Web Services(7):剩下两个Sad Path场景该如何处理.html (1.06 MB)

  *   08 43|RESTful Web Services(7):剩下两个Sad Path场景该如何处理.mp3 (0.96 MB)

  *   09 44|RESTful Web Services(8):如何在现有代码的基础上构造测试.html (1.11 MB)

  *   09 44|RESTful Web Services(8):如何在现有代码的基础上构造测试.mp3 (1.42 MB)

  *   10 45|RESTful Web Services(9):通过伦敦学派得到的测试风格是什么样的.html (1.13 MB)

  *   10 45|RESTful Web Services(9):通过伦敦学派得到的测试风格是什么样的.mp3 (1.41 MB)

  *   11 46|RESTful Web Services(10):伦敦学派与经典学派的测试节奏有何不同.html (1.14 MB)

  *   11 46|RESTful Web Services(10):伦敦学派与经典学派的测试节奏有何不同.mp3 (2.17 MB)

  *   12 47|RESTful Web Services(11):如何通过Spike来验证架构愿景.html (0.27 MB)

  *   12 47|RESTful Web Services(11):如何通过Spike来验证架构愿景.mp3 (1.53 MB)

  *   13 48|RESTful Web Services(12):如何调整接口和架构愿景.html (0.28 MB)

  *   13 48|RESTful Web Services(12):如何调整接口和架构愿景.mp3 (1.42 MB)

  *   14 49|RESTful Web Service(13):如何Spike Sub-Resource Locator.html (0.58 MB)

  *   14 49|RESTful Web Service(13):如何Spike Sub-Resource Locator.mp3 (1.81 MB)

  *   15 50|RESTful Web Services(14):分解任务与Setup测试.html (0.70 MB)

  *   15 50|RESTful Web Services(14):分解任务与Setup测试.mp3 (1.26 MB)

  *   16 51|RESTful Web Services(15):为什么选择在第一个测试之后就开始重构.html (0.63 MB)

  *   16 51|RESTful Web Services(15):为什么选择在第一个测试之后就开始重构.mp3 (1.33 MB)

  *   17 52|RESTful Web Services(16):重构手法之设计方法名的名称.html (0.69 MB)

  *   17 52|RESTful Web Services(16):重构手法之设计方法名的名称.mp3 (1.41 MB)

  *   18 53|RESTful Web Services(17):如何进行Spike的架构愿景细化.html (0.74 MB)

  *   18 53|RESTful Web Services(17):如何进行Spike的架构愿景细化.mp3 (1.06 MB)

  *   19 54|RESTful Web Services(18):如何实现UriTemplate的主要功能.html (0.63 MB)

  *   19 54|RESTful Web Services(18):如何实现UriTemplate的主要功能.mp3 (1.34 MB)

  *   20 55|RESTful Web Services(19):如何更有效地构造测试数据.html (0.64 MB)

  *   20 55|RESTful Web Services(19):如何更有效地构造测试数据.mp3 (1.17 MB)

  *   21 56|RESTful Web Services(20):为什么要通过测试的方法来驱动出代码结构.html (0.62 MB)

  *   21 56|RESTful Web Services(20):为什么要通过测试的方法来驱动出代码结构.mp3 (1.43 MB)

  *   22 57|RESTful Web Services(21):按照三角法,该如何增加新的测试案例.html (0.60 MB)

  *   22 57|RESTful Web Services(21):按照三角法,该如何增加新的测试案例.mp3 (1.48 MB)

  *   23 58|RESTful Web Services(22):重构还是继续完成功能.html (0.76 MB)

  *   23 58|RESTful Web Services(22):重构还是继续完成功能.mp3 (1.74 MB)

  *   24 59|RESTful Web Services(23):如何构造测试数据.html (0.64 MB)

  *   24 59|RESTful Web Services(23):如何构造测试数据.mp3 (1.16 MB)

  *   25 60|RESTful Web Services(24):RootResource的测试要如何改造.html (0.54 MB)

  *   25 60|RESTful Web Services(24):RootResource的测试要如何改造.mp3 (1.15 MB)

  *   26 61 |RESTful Web Services(25):如何重构DefaultResourceRouter中的Result结构.html (0.66 MB)

  *   26 61 |RESTful Web Services(25):如何重构DefaultResourceRouter中的Result结构.mp3 (1.19 MB)

  *   27 62|RESTful Web Services(26):如何继续划分ResourceLocator的任务.html (0.71 MB)

  *   27 62|RESTful Web Services(26):如何继续划分ResourceLocator的任务.mp3 (1.74 MB)

  *   28 63|RESTful Web Services(27):如何通过重构修改接口.html (0.77 MB)

  *   28 63|RESTful Web Services(27):如何通过重构修改接口.mp3 (1.70 MB)

  *   29 64|RESTful Web Services(28):如何重构Resource、SubResource等接口与实现.html (0.64 MB)

  *   29 64|RESTful Web Services(28):如何重构Resource、SubResource等接口与实现.mp3 (1.25 MB)

  *   30 65|RESTful Web Services(29):后续任务将要如何划分与实现.html (0.72 MB)

  *   30 65|RESTful Web Services(29):后续任务将要如何划分与实现.mp3 (3.95 MB)

  *   31 66|RESTful Web Services(30):什么情况下应该使用行为验证.html (0.69 MB)

  *   31 66|RESTful Web Services(30):什么情况下应该使用行为验证.mp3 (3.92 MB)

  *   32 67|RESTful Web Services(31):对于option的测试策略应该是怎样的.html (0.69 MB)

  *   32 67|RESTful Web Services(31):对于option的测试策略应该是怎样的.mp3 (1.55 MB)

  *   33 68|RESTful Web Services(32):目前代码中的一个重大Bug是什么.html (0.65 MB)

  *   33 68|RESTful Web Services(32):目前代码中的一个重大Bug是什么.mp3 (1.27 MB)

  *   34 69|RESTful Web Services(33):如何拆分对于injection部分的需求.html (0.68 MB)

  *   34 69|RESTful Web Services(33):如何拆分对于injection部分的需求.mp3 (1.45 MB)

  *   35 70|RESTful Web Services(34):在当前代码结构下,要如何进行重构.html (0.73 MB)

  *   35 70|RESTful Web Services(34):在当前代码结构下,要如何进行重构.mp3 (1.69 MB)

  *   36 71|RESTful Web Services(35):如何将测试改为动态测试.html (0.73 MB)

  *   36 71|RESTful Web Services(35):如何将测试改为动态测试.mp3 (1.48 MB)

  *   37 72|RESTful Web Services(36):在现有结构下,如何支持转换构造函数.html (0.68 MB)

  *   37 72|RESTful Web Services(36):在现有结构下,如何支持转换构造函数.mp3 (0.89 MB)

  *   38 73|RESTful Web Services(37):再增加converter方法时,步骤有什么不同.html (0.73 MB)

  *   38 73|RESTful Web Services(37):再增加converter方法时,步骤有什么不同.mp3 (1.12 MB)

  *   39 74|RESTful Web Services(38):如何提取方法调用部分.html (1.01 MB)

  *   39 74|RESTful Web Services(38):如何提取方法调用部分.mp3 (1.05 MB)

  *   40 75|RESTful Web Services(39):如何使用继承的方式来复用测试.html (0.89 MB)

  *   40 75|RESTful Web Services(39):如何使用继承的方式来复用测试.mp3 (1.34 MB)

  *   41 76|RESTful Web Services(40):如何开展有效的集成测试.html (0.81 MB)

  *   41 76|RESTful Web Services(40):如何开展有效的集成测试.mp3 (1.54 MB)

  *   42 77|RESTful Web Services(41):对于资源的访问,我们需要补充哪些相关功能.html (0.66 MB)

  *   42 77|RESTful Web Services(41):对于资源的访问,我们需要补充哪些相关功能.mp3 (0.96 MB)

  *   43 78|RESTful Web Services(42):项目总结与回顾.html (0.72 MB)

  *   43 78|RESTful Web Services(42):项目总结与回顾.mp3 (2.40 MB)

  *   44 用户故事01|aoe:如果把《重构》这本书拍成电视剧.html (0.61 MB)

  *   44 用户故事01|aoe:如果把《重构》这本书拍成电视剧.mp3 (9.96 MB)

*   06 实战项目四|线段编辑器/

  *   01 79|线段编辑器:架构思路与任务拆分.html (0.17 MB)

  *   01 79|线段编辑器:架构思路与任务拆分.mp3 (2.39 MB)

  *   02 80|Line Editor (2):如何重构生成与更新锚点控制点的逻辑.html (0.12 MB)

  *   02 80|Line Editor (2):如何重构生成与更新锚点控制点的逻辑.mp3 (1.16 MB)

*   07 结束语/

  *   01 81|结束语:掌握TDD的那天,我才成为了可靠高效的职业程序员.html (0.66 MB)

  *   01 81|结束语:掌握TDD的那天,我才成为了可靠高效的职业程序员.mp3 (2.29 MB)

  *   02 期末测试|赴一场100分之约!.html (0.61 MB)

  *   02 期末测试|赴一场100分之约!.mp3 (0.78 MB)