-
-
01-TDD演示(1):任务分解法与整体工作流程_For_group_share.html
-
01-TDD演示(1):任务分解法与整体工作流程_For_group_share.mp3
-
02-TDD演示(2):识别坏味道与代码重构_For_group_share.html
-
02-TDD演示(2):识别坏味道与代码重构_For_group_share.mp3
-
03-TDD演示(3):按测试策略重组测试_For_group_share.html
-
03-TDD演示(3):按测试策略重组测试_For_group_share.mp3
-
04-TDD演示(4):实现对于列表参数的支持_For_group_share.html
-
04-TDD演示(4):实现对于列表参数的支持_For_group_share.mp3
-
05-TDD中的测试(1):状态验证为什么是主要的使用方式?_For_group_share.html
-
05-TDD中的测试(1):状态验证为什么是主要的使用方式?_For_group_share.mp3
-
06-TDD中的测试(2):行为验证为什么应该尽量避免使用?_For_group_share.html
-
06-TDD中的测试(2):行为验证为什么应该尽量避免使用?_For_group_share.mp3
-
07-TDD中的测试(3):集成测试还是单元测试?_For_group_share.html
-
07-TDD中的测试(3):集成测试还是单元测试?_For_group_share.mp3
-
08-TDD中的驱动(1):驱动的极限是什么?_For_group_share.html
-
08-TDD中的驱动(1):驱动的极限是什么?_For_group_share.mp3
-
09-TDD中的驱动(2):重构发挥了什么作用?_For_group_share.html
-
09-TDD中的驱动(2):重构发挥了什么作用?_For_group_share.mp3
-
10-TDD中的驱动(3):何为经典学派?何为伦敦学派?_For_group_share.html
-
10-TDD中的驱动(3):何为经典学派?何为伦敦学派?_For_group_share.mp3
-
11-作为工程化方法的TDD:更低的成本与更高的效能_For_group_share.html
-
11-作为工程化方法的TDD:更低的成本与更高的效能_For_group_share.mp3
-
12-实战中的TDD:RESTfulAPI的开发框架_For_group_share.html
-
12-实战中的TDD:RESTfulAPI的开发框架_For_group_share.mp3
-
13-DIContainer(1):如何实现基本的DI容器结构?_For_group_share.html
-
13-DIContainer(1):如何实现基本的DI容器结构?_For_group_share.mp3
-
14-DIContainer(2):如何通过SadPath为容器增加功能?_For_group_share.html
-
14-DIContainer(2):如何通过SadPath为容器增加功能?_For_group_share.mp3
-
15-DIContainer(3):如何重构已有的代码?_For_group_share.html
-
15-DIContainer(3):如何重构已有的代码?_For_group_share.mp3
-
16-DIContainer(4):如何实现对循环依赖的处理?_For_group_share.html
-
16-DIContainer(4):如何实现对循环依赖的处理?_For_group_share.mp3
-
17-DIContainer(5):API接口该怎么设计?_For_group_share.html
-
17-DIContainer(5):API接口该怎么设计?_For_group_share.mp3
-
18-DIContainer(6):如何实现循环依赖的检查?_For_group_share.html
-
18-DIContainer(6):如何实现循环依赖的检查?_For_group_share.mp3
-
19-DIContainer(7):如何实现FieldInjection部分的功能?_For_group_share.html
-
19-DIContainer(7):如何实现FieldInjection部分的功能?_For_group_share.mp3
-
20-DIContainer(8):如何实现MethodInjection部分的功能?_For_group_share.html
-
20-DIContainer(8):如何实现MethodInjection部分的功能?_For_group_share.mp3
-
21-DIContainer(9):怎样重构测试代码?_For_group_share.html
-
21-DIContainer(9):怎样重构测试代码?_For_group_share.mp3
-
22-DIContainer(10):怎样将大粒度的测试重构为等效的小粒度测试代码?_For_group_share.html
-
22-DIContainer(10):怎样将大粒度的测试重构为等效的小粒度测试代码?_For_group_share.mp3
-
23-DIContainer(11):如何对ContainerTest进行文档化改造?_For_group_share.html
-
23-DIContainer(11):如何对ContainerTest进行文档化改造?_For_group_share.mp3
-
24-DIContainer(12):如何增补功能?_For_group_share.html
-
24-DIContainer(12):如何增补功能?_For_group_share.mp3
-
25-DIContainer(13):任务上的遗漏该怎么处理?_For_group_share.html
-
25-DIContainer(13):任务上的遗漏该怎么处理?_For_group_share.mp3
-
26-DIContainer(14):如何重构对Type类型判断的逻辑?_For_group_share.html
-
26-DIContainer(14):如何重构对Type类型判断的逻辑?_For_group_share.mp3
-
27-DIContainer(15):如何封装类型判断逻辑?_For_group_share.html
-
27-DIContainer(15):如何封装类型判断逻辑?_For_group_share.mp3
-
28-DIContainer(16):行为封装会对测试产生什么影响?_For_group_share.html
-
28-DIContainer(16):行为封装会对测试产生什么影响?_For_group_share.mp3
-
29-DIContainer(17):如何重构ContextConfig内部的实现?_For_group_share.html
-
29-DIContainer(17):如何重构ContextConfig内部的实现?_For_group_share.mp3
-
30-DIContainer(18):如何增补依赖缺失和循环依赖的测试?_For_group_share.html
-
30-DIContainer(18):如何增补依赖缺失和循环依赖的测试?_For_group_share.mp3
-
31-DIContainer(19):Qualifier部分的功能要如何完成?_For_group_share.html
-
31-DIContainer(19):Qualifier部分的功能要如何完成?_For_group_share.mp3
-
代码评点01-不同语言TDD的节奏有何不同?_For_group_share.html
-
代码评点01-不同语言TDD的节奏有何不同?_For_group_share.mp3
-
代码评点02-什么是合适TDD的语言和IDE?_For_group_share.html
-
代码评点02-什么是合适TDD的语言和IDE?_For_group_share.mp3
-
开篇词-为什么TDD是当前最具工程效能的研发流程?_For_group_share.html
-
开篇词-为什么TDD是当前最具工程效能的研发流程?_For_group_share.mp3
-
课前必读-20年前的“老古董”技术,为什么还值得开个课?_For_group_share.html
-
课前必读-20年前的“老古董”技术,为什么还值得开个课?_For_group_share.mp3
-