主题
徐昊 · TDD项目实战70讲
共 89 讲。
目录
- 徐昊 · TDD项目实战70讲
- 开篇词-为什么TDD是当前最具工程效能的研发流程?
- 课前必读01-20年前的“老古董”技术,为什么还值得开个课?
- 课前必读02-程序员究竟是搞技术的,还是做工程的?
- 01-TDD演示(1):任务分解法与整体工作流程
- 02-TDD演示(2):识别坏味道与代码重构
- 03-TDD演示(3):按测试策略重组测试
- 04-TDD演示(4):实现对于列表参数的支持
- 05-TDD中的测试(1):状态验证为什么是主要的使用方式?
- 06-TDD中的测试(2):行为验证为什么应该尽量避免使用?
- 07-TDD中的测试(3):集成测试还是单元测试?
- 08-TDD中的驱动(1):驱动的极限是什么?
- 09-TDD中的驱动(2):重构发挥了什么作用?
- 10-TDD中的驱动(3):何为经典学派?何为伦敦学派?
- 11-作为工程化方法的TDD:更低的成本与更高的效能
- 代码评点01-不同语言TDD的节奏有何不同?
- 代码评点02-什么是合适TDD的语言和IDE?
- 12-实战中的TDD:RESTful API的开发框架
- 13 -DI Container(1):如何实现基本的DI容器结构?
- 14-DI Container(2):如何通过Sad Path为容器增加功能?
- 15-DI Container(3):如何重构已有的代码?
- 16-DI Container(4):如何实现对循环依赖的处理?
- 17-DI Container(5):API接口该怎么设计?
- 18-DI Container(6):如何实现循环依赖的检查?
- 19-DI Container(7):如何实现Field Injection部分的功能?
- 20-DI Container(8):如何实现Method Injection部分的功能?
- 21-DI Container(9):怎样重构测试代码?
- 22-DI Container(10):怎样将大粒度的测试重构为等效的小粒度测试代码?
- 23-DI Container(11):如何对ContainerTest进行文档化改造?
- 24-DI Container(12):如何增补功能?
- 25-DI Container(13):任务上的遗漏该怎么处理?
- 26-DI Container(14):如何重构对Type类型判断的逻辑?
- 27-DI Container(15):如何封装类型判断逻辑?
- 28-DI Container(16):行为封装会对测试产生什么影响?
- 29-DI Container(17):如何重构ContextConfig内部的实现?
- 30-DI Container(18):如何增补依赖缺失和循环依赖的测试?
- 31-DI Container(19):Qualifier部分的功能要如何完成?
- 32-DI Container(20):如何对代码和测试进行重构?
- 33-DI Container(21):如何处理Singleton生命周期部分的功能?
- 34-DI Container(22):如何对Bind的逻辑进行重构?
- 35-DI Container(23):项目回顾与总结
- 36-实战中的TDD:RESTful Web Services
- 37-RESTful Web Services(1):明确架构愿景与架构组件间的交互
- 38-RESTful Web Services(2):根据Spike的结果,要如何调整架构愿景?
- 39-RESTful Web Services(3):明确架构愿景与调用栈顺序
- 40-RESTful Web Services(4):在当前架构愿景下,要如何分解任务?
- 41-RESTful Web Services(5):如何通过对数据测试的管理来凸显意图?
- 42-RESTful Web Services(6):如何处理JAX-RS定义的异常类?
- 43-RESTful Web Services(7):剩下两个Sad Path场景该如何处理?
- 44-RESTful Web Services(8):如何在现有代码的基础上构造测试?
- 45-RESTful Web Services(9):通过伦敦学派得到的测试风格是什么样的?
- 46-RESTful Web Services(10):伦敦学派与经典学派的测试节奏有何不同?
- 47-RESTful Web Services(11):如何通过Spike来验证架构愿景?
- 48-RESTful Web Services(12):如何调整接口和架构愿景?
- 49-RESTful Web Service(13):如何Spike Sub-Resource Locator?
- 50-RESTful Web Services(14):分解任务与Setup测试
- 51-RESTful Web Services(15):为什么选择在第一个测试之后就开始重构?
- 52-RESTful Web Services(16):重构手法之设计方法名的名称
- 53-RESTful Web Services(17):如何进行Spike的架构愿景细化?
- 54-RESTful Web Services(18):如何实现UriTemplate的主要功能?
- 55-RESTful Web Services(19):如何更有效地构造测试数据?
- 56-RESTful Web Services(20):为什么要通过测试的方法来驱动出代码结构?
- 57-RESTful Web Services(21):按照三角法,该如何增加新的测试案例?
- 58-RESTful Web Services(22):重构还是继续完成功能?
- 59-RESTful Web Services(23):如何构造测试数据?
- 60-RESTful Web Services(24):RootResource的测试要如何改造?
- 61 -RESTful Web Services(25):如何重构DefaultResourceRouter中的Result结构?
- 62-RESTful Web Services(26):如何继续划分ResourceLocator的任务?
- 63-RESTful Web Services(27):如何通过重构修改接口?
- 64-RESTful Web Services(28):如何重构Resource、SubResource等接口与实现?
- 65-RESTful Web Services(29):后续任务将要如何划分与实现?
- 66-RESTful Web Services(30):什么情况下应该使用行为验证?
- 67-RESTful Web Services(31):对于option的测试策略应该是怎样的?
- 68-RESTful Web Services(32):目前代码中的一个重大Bug是什么?
- 69-RESTful Web Services(33):如何拆分对于injection部分的需求?
- 70-RESTful Web Services(34):在当前代码结构下,要如何进行重构?
- 71-RESTful Web Services(35):如何将测试改为动态测试?
- 72-RESTful Web Services(36):在现有结构下,如何支持转换构造函数?
- 73-RESTful Web Services(37):再增加converter方法时,步骤有什么不同?
- 74-RESTful Web Services(38):如何提取方法调用部分?
- 75-RESTful Web Services(39):如何使用继承的方式来复用测试?
- 76-RESTful Web Services(40):如何开展有效的集成测试?
- 77-RESTful Web Services(41):对于资源的访问,我们需要补充哪些相关功能?
- 78-RESTful Web Services(42):项目总结与回顾
- 用户故事01-aoe:如果把《重构》这本书拍成电视剧
- 79-线段编辑器:架构思路与任务拆分
- 80-Line Editor (2):如何重构生成与更新锚点控制点的逻辑?
- 81-结束语:掌握TDD的那天,我才成为了可靠高效的职业程序员
- 期末测试-赴一场100分之约!