程序员练功房14天编程训练总结
最近持续几周,一直打卡参加学习熊节老师的《程序员练功房》的TDD学习14关,有些感悟和总结在这里记录下:
在刚开始接触的时候,感觉先写测试再写代码真的很浪费时间,在第一关学习打卡的时候就比较排斥,在想TDD到底好在哪?带着疑问,通过上网查资料和看书,结合老师的TDD方法论,经过几次打卡练习,慢慢发现以往开发的不足,以前开发都是先写代码后测试很容易使前期的思考不全面,从而写出了无法完成全部任务的代码。平时遇到这个情况,无非就是继续返工。可是反反复复的编写、调试和失败也浪费了大量的时间,归根结底就是因为没有想好要去做什么、做到什么程度、怎样去做。
一、所谓TDD(Test Driver Development),即测试驱动开发,顾名思义就是以测试代码驱动程序开发,先写测试用例,然后用代码实现测试用例。
二、测试驱动开发流程如下:
三、如何分析拆解任务(像机器一样思考):
分析问题步骤:
- 分解问题
- 找到子问题之间的关联(通过输入输出关联起来)
- 找到问题的边界,明确假设与结果
画图的规则:
- 图基本元素由方块和带箭头的线组成
- 一个方块只代表一个函数或一个代码块,通常是函数,方块中可以写字,可以表达函数是属于哪个类或哪个实例等信息。
- 指向方块的线代表该函数的输入,背离方块的线代表函数的输出。
- 数据流动的时间轴遵守先从左到右,再从上到下的顺序。
- 每一对输入输出(输入在上,输出在下)加一个方块,表达了一次函数调用。
四、测试用例编写:
测试用例需要有given、when、then,既已有条件、执行什么和最后期望的结果,在选取测试用例时既要全面又不能过多显得冗余。测试类名、方法名命名规范名词意思表达清楚(比如: should_return_correct_args_parser),可选取边界值及一个起始值或中间值,这样基本可以覆盖整个测试情况。
五、方法论:
先写测试,再写代码,每行代码是否都是由测试驱动出来,反思浪费时间点卡在哪里,是否有改进办法,另外,重复练习,结合学习资料,形成一个好的开发习惯
六、TDD代码展示:
-
- 核心代码:
- 测试用例展示:
最后,感谢熊老师和他的练功房,让我能反思自己代码,从中提升和加强自己的开发能力。