Java重构与TDD测试驱动开发实际案例一—2117人已学习
课程介绍
本课程将高深的重构与TDD理论埋藏在一个实际案例中,深入浅出地演示了重构与TDD的完整步骤。 在这个真实的案例中,一个银行项目的2000多行的模块,终被重构为仅有160多行,并实现了单元测试级别的自动化测试。实际重构耗时1天,本课程将1天的时间用近百个片段重现出来,并增加了一些新功能来演示更多重构所需的技术。
课程收益
在实战中学习重构所需的封装、继承、多态、泛型等方法; 优化自动化测试代码(实例中每个测试用例平均仅需要1行代码),提升TDD和自动化测试的效率。 掌握编写精美代码的思想。
讲师介绍
陈勇 更多讲师课程
具有丰富的工程技术与项目管理实践经验,从其程序员、项目经理、CMMI/FPA功能点估算/敏捷咨询师、事业部总监、副总经理等各种技术与管理岗位获得的一手经验,令其可以站在企业管理者的高度,以更广的视角来理解敏捷开发,并能配合和推动非研发部门协作推广敏捷。
课程大纲
1. 01-010 段子:何时重构? 4:23
2. 01-020 案例1:背景介绍 3:15
3. 01-030 案例1:1030行的函数 4:53
4. 01-040 案例1:补充背景 4:22
5. 01-050 案例1:不良实现的数值存放 4:22
6. 01-060 案例1:不良实现的数值比较 4:57
7. 01-070 重构第1原则:TDD 3:37
8. 01-080 案例1.1:泛型存放数据 4:48
9. 01-090 案例1.1:泛型setValue() 1:49
10. 01-100 重构第2原则:使用语言新特性 3:22
11. 01-110 重构第3原则:使用智慧的设计 3:39
12. 01-120 案例1.1:比较Integer与Integer 1:13
13. 01-130 案例1.1:比较Integer与BigInteger 2:29
14. 01-140 案例1.1:比较Integer, Float, String 4:12
15. 01-150 案例1.1:比较Integer与String 1:35
16. 01-160 案例1.1:比较Float与Float 1:29
17. 01-170 案例1.1:比较Integer与Float 0:45
18. 01-180 案例1:比较Integer与BigDecimal 3:53
19. 01-190 自动化测试第1原则:分离测试方法 3:30
20. 01-200 案例1.1:toBigDecimal后比较BigDecimal与BigDecimal 3:04
21. 01-210 案例1.1:BigDecimal的比较原理 2:09
22. 01-220 案例1.1:BigDecimal.stripTraillingZeros 1:36
23. 01-230 火星人谚语——天无绝人之路 4:37
24. 01-240 如何确认“这是实现不了的” 4:32
25. 01-250 案例1.1:所有数字利用BigDecimal进行比较 4:49
26. 01-260 案例1.1:简化单个测试用例代码行数 3:50
27. 01-270 案例1.1:批量存放测试用例 4:49
28. 01-280 自动化测试第2原则:效率优先 4:38
29. 01-290 案例1.1:封装测试用例 4:50
30. 01-300 案例1.1:使用封装的测试用例 2:37
31. 01-310 案例1.1:批量创建测试用例 4:59
32. 01-320 案例1.1:总结 5:00
33. 01-330 案例1.2:Boolean无法toBigDecimal 3:32
34. 01-340 案例1.2:使用三元表达式的比较 4:38
35. 01-350 案例1.2:引入FormulaValueNumber和Bounded Type 3:35
36. 01-360 案例1.2:比较Boolean与String 1:54
37. 01-370 案例1.2:比较Datetime与Datetime以及String 3:59
38. 01-380 案例1.2:初次启用“小于”操作 4:19
39. 01-390 案例1.2:认识Camparable 4:36
40. 01-400 案例1.2:使用campareTo实现小于操作 3:31
41. 01-410 案例1.2:使用campareTo实现其他操作 4:41
42. 01-420 案例1.2:优化日志中的操作符 4:18
43. 01-430 案例1.2:反向操作符的if else if实现方法 4:56
44. 01-450 案例1.2:反向操作符的三元表达式实现方法 4:59
45. 01-460 案例1.2:反向操作符的无else实现方法 4:17
46. 01-470 案例1.2:反向操作符的Java9 Map实现方法 4:47
47. 01-480 火星人谚语:不要触犯天条 4:41
48. 01-490 火星人谚语:只编写精美代码 4:51
49. 01-500 数据与代码分离的好处:代码质量高 4:26
50. 01-510 数据与代码分离的好处:更好的复用 2:26
51. 01-520 火星人谚语:编程是一门艺术 4:45
52. 01-530 案例1.2:反向操作符的最终测试效果 2:04
53. 01-540 案例1.3 ValueString在左侧时的困境 3:58
54. 01-550 案例1.3 使用类工厂生成不同的Formula 4:52
55. 01-560 案例1.3 使用简单的分支来判断是否是Number 3:07
56. 01-570 案例1.3 判断一个String是否可以被转换为BigDecimal 2:48
57. 01-580 案例1.3 利用多态@Override来比较String与Ingeger 3:19
58. 01-590 案例1.3 用工厂生产FormulaBoolean 3:52
59. 01-660 案例1.3 用工厂生产FormulaDatetime 3:51
60. 01-670 案例1.3 用统一的canBeConvertToX优化实现 4:27
61. 01-680 多态第1个优势:分散并简化代码 4:51
62. 01-690 多态第2个优势:代码易于维护 3:02
63. 01-700 案例1.3 用组合代替继承 3:33
64. 01-710 案例1.3 用工厂生产FormulaComparator 3:45
65. 01-720 案例1.3 实现三种FormulaComparator 3:34
66. 01-730 案例1.3 测试三种FormulaComparator 0:33
67. 01-740 火星人谚语:宁用组合不用继承 2:57
68. 01-900-0 命名规范:类名 4:27
69. 01-900-1 命名规范:变量名 2:38
70. 01-900-2 命名规范:方法名 4:58
71. 01-900-3 命名规范:集合名 4:57
72. 01-910-1 封装规范:方法长度限制 4:58
73. 01-910-2封装规范:用if-return消灭else 4:35
74. 01-910-3封装规范:用Map消灭else 4:50
75. 01-910-4封装规范:用泛型消灭else 2:04
76. 01-910-5封装规范:用多态消灭else 3:42
77. 01-910-6封装规范:用三元表达式消灭else 2:00
78. 01-910-7封装规范:消灭else的本质 4:48
大家可以点击【 查看详情】查看我的课程
课程介绍

本课程将高深的重构与TDD理论埋藏在一个实际案例中,深入浅出地演示了重构与TDD的完整步骤。 在这个真实的案例中,一个银行项目的2000多行的模块,终被重构为仅有160多行,并实现了单元测试级别的自动化测试。实际重构耗时1天,本课程将1天的时间用近百个片段重现出来,并增加了一些新功能来演示更多重构所需的技术。
课程收益
在实战中学习重构所需的封装、继承、多态、泛型等方法; 优化自动化测试代码(实例中每个测试用例平均仅需要1行代码),提升TDD和自动化测试的效率。 掌握编写精美代码的思想。
讲师介绍
陈勇 更多讲师课程
具有丰富的工程技术与项目管理实践经验,从其程序员、项目经理、CMMI/FPA功能点估算/敏捷咨询师、事业部总监、副总经理等各种技术与管理岗位获得的一手经验,令其可以站在企业管理者的高度,以更广的视角来理解敏捷开发,并能配合和推动非研发部门协作推广敏捷。
课程大纲
1. 01-010 段子:何时重构? 4:23
2. 01-020 案例1:背景介绍 3:15
3. 01-030 案例1:1030行的函数 4:53
4. 01-040 案例1:补充背景 4:22
5. 01-050 案例1:不良实现的数值存放 4:22
6. 01-060 案例1:不良实现的数值比较 4:57
7. 01-070 重构第1原则:TDD 3:37
8. 01-080 案例1.1:泛型存放数据 4:48
9. 01-090 案例1.1:泛型setValue() 1:49
10. 01-100 重构第2原则:使用语言新特性 3:22
11. 01-110 重构第3原则:使用智慧的设计 3:39
12. 01-120 案例1.1:比较Integer与Integer 1:13
13. 01-130 案例1.1:比较Integer与BigInteger 2:29
14. 01-140 案例1.1:比较Integer, Float, String 4:12
15. 01-150 案例1.1:比较Integer与String 1:35
16. 01-160 案例1.1:比较Float与Float 1:29
17. 01-170 案例1.1:比较Integer与Float 0:45
18. 01-180 案例1:比较Integer与BigDecimal 3:53
19. 01-190 自动化测试第1原则:分离测试方法 3:30
20. 01-200 案例1.1:toBigDecimal后比较BigDecimal与BigDecimal 3:04
21. 01-210 案例1.1:BigDecimal的比较原理 2:09
22. 01-220 案例1.1:BigDecimal.stripTraillingZeros 1:36
23. 01-230 火星人谚语——天无绝人之路 4:37
24. 01-240 如何确认“这是实现不了的” 4:32
25. 01-250 案例1.1:所有数字利用BigDecimal进行比较 4:49
26. 01-260 案例1.1:简化单个测试用例代码行数 3:50
27. 01-270 案例1.1:批量存放测试用例 4:49
28. 01-280 自动化测试第2原则:效率优先 4:38
29. 01-290 案例1.1:封装测试用例 4:50
30. 01-300 案例1.1:使用封装的测试用例 2:37
31. 01-310 案例1.1:批量创建测试用例 4:59
32. 01-320 案例1.1:总结 5:00
33. 01-330 案例1.2:Boolean无法toBigDecimal 3:32
34. 01-340 案例1.2:使用三元表达式的比较 4:38
35. 01-350 案例1.2:引入FormulaValueNumber和Bounded Type 3:35
36. 01-360 案例1.2:比较Boolean与String 1:54
37. 01-370 案例1.2:比较Datetime与Datetime以及String 3:59
38. 01-380 案例1.2:初次启用“小于”操作 4:19
39. 01-390 案例1.2:认识Camparable 4:36
40. 01-400 案例1.2:使用campareTo实现小于操作 3:31
41. 01-410 案例1.2:使用campareTo实现其他操作 4:41
42. 01-420 案例1.2:优化日志中的操作符 4:18
43. 01-430 案例1.2:反向操作符的if else if实现方法 4:56
44. 01-450 案例1.2:反向操作符的三元表达式实现方法 4:59
45. 01-460 案例1.2:反向操作符的无else实现方法 4:17
46. 01-470 案例1.2:反向操作符的Java9 Map实现方法 4:47
47. 01-480 火星人谚语:不要触犯天条 4:41
48. 01-490 火星人谚语:只编写精美代码 4:51
49. 01-500 数据与代码分离的好处:代码质量高 4:26
50. 01-510 数据与代码分离的好处:更好的复用 2:26
51. 01-520 火星人谚语:编程是一门艺术 4:45
52. 01-530 案例1.2:反向操作符的最终测试效果 2:04
53. 01-540 案例1.3 ValueString在左侧时的困境 3:58
54. 01-550 案例1.3 使用类工厂生成不同的Formula 4:52
55. 01-560 案例1.3 使用简单的分支来判断是否是Number 3:07
56. 01-570 案例1.3 判断一个String是否可以被转换为BigDecimal 2:48
57. 01-580 案例1.3 利用多态@Override来比较String与Ingeger 3:19
58. 01-590 案例1.3 用工厂生产FormulaBoolean 3:52
59. 01-660 案例1.3 用工厂生产FormulaDatetime 3:51
60. 01-670 案例1.3 用统一的canBeConvertToX优化实现 4:27
61. 01-680 多态第1个优势:分散并简化代码 4:51
62. 01-690 多态第2个优势:代码易于维护 3:02
63. 01-700 案例1.3 用组合代替继承 3:33
64. 01-710 案例1.3 用工厂生产FormulaComparator 3:45
65. 01-720 案例1.3 实现三种FormulaComparator 3:34
66. 01-730 案例1.3 测试三种FormulaComparator 0:33
67. 01-740 火星人谚语:宁用组合不用继承 2:57
68. 01-900-0 命名规范:类名 4:27
69. 01-900-1 命名规范:变量名 2:38
70. 01-900-2 命名规范:方法名 4:58
71. 01-900-3 命名规范:集合名 4:57
72. 01-910-1 封装规范:方法长度限制 4:58
73. 01-910-2封装规范:用if-return消灭else 4:35
74. 01-910-3封装规范:用Map消灭else 4:50
75. 01-910-4封装规范:用泛型消灭else 2:04
76. 01-910-5封装规范:用多态消灭else 3:42
77. 01-910-6封装规范:用三元表达式消灭else 2:00
78. 01-910-7封装规范:消灭else的本质 4:48
大家可以点击【 查看详情】查看我的课程