打球像做人
上图是笔者几年前拿网路上的图来东凑西凑,拼出来的桌面,本只是拿来练 Photo Impact,没想到几年後发现蛮多人转发的,甚至有人拿来再创作,放在自己的影音作品内。感觉很有意思。
在笔者成长的年代,那时台湾的棒球正在经历一个史无前例的黑暗时代。职棒签赌案一椿又一椿,当时搞得社会氛围甚至有种「打棒球就是赌博」的气氛。有一个人带领我们撑过来了,那就是台湾巨炮-陈金锋。
陈金锋曾在一次访谈中说到:「打球像做人,就是真诚。」这对社会起来多少作用我不知道,但对一个棒球迷的我来说,在往後一些决策上,着实起了不小影响。一句话是不是你说的、一个 Solution 是不是你想出来的、一个技术你究竟会不会、熟不熟,你可以骗人,但总有一天你会需要拿真相出来验证,到时你还是得面对真实。
不会,就练。练多了,你就会了。
本篇将藉一个公开的练习题,进行 TDD 的实弹演习。
各位如果常用一些绘图软件,或是画 UML 流程图的工具,应该有体验过一个功能,就是在一个已存在的点附近按一下,不用按太准,滑鼠会自动「滑」到原有的点上去,就像被磁铁吸过去一样。Magneto Effect 这个题目就是在实践这样的工具。
例如,画面上已存在了一个锚点(50, 50),而磁力作用的范围假设是 5,当滑鼠在(49, 50)的座标上被按下时,因为在锚点的范围内,所以就自动被「吸」到锚点(50, 50)上了。如果同时有多个锚点在附近,就「吸」到最近的点上去。
我们要先来列个测项,这些测项能帮助我们待会写程序时有个目标物可以参考。同时,要注意测项的顺序。一般来说,会先做简单的 case,再一个一个慢慢加复杂,或是先处理介面等细节,再慢慢加入重要运算。最後,需注意测项间的依赖。如果做到一半发现测项有要新增、修改,或换顺序的,就来把它改掉:
假设磁力作用的范围是 5
锚点 | 滑鼠原位置 | 滑鼠新位置 | 测试功能 |
---|---|---|---|
- | (49, 50) | (49, 50) | 定介面、没有锚点 |
(50, 50) | (49, 50) | (50, 50) | 距离够近 |
(0, 0) | (49, 50) | (49, 50) | 距离很远 |
(50, 50)、(0, 0) | (49, 50) | (50, 50) | 两个锚点,一个在附近 |
(50, 49)、(50, 50) | (49, 50) | (50, 50) | 两个锚点,都在附近 |
题目不难,但因为篇幅有限,而 TDD 过程每一步还是比较繁琐,所以这里我们就用影片来演示整个过程:
请注意,此完全没有经过美化与剪接,意在真实呈现真实工作中会出现的情形,中间有一些卡住与 debug的过程,请耐心服用。觉得语速较慢着,请加快成 1.5 倍速服用 :)
透过这个小小的题目,我们稍稍对 TDD 的运作情形,有了一点点了解。然而,光是看是不够的。要想享受 TDD 带来的好处,是要一定程度的练习的,而笔者其实不建议各位一开始就拿工作的专案来练习。也许一段时间後可以,但一开始不要,尤其「绝对不要」在上班时间练习。
写工作的 code 会有时间压力。压力一来,你会很难很难坚持使用你刚学、还没掌握诀窍的方法,你会更倾向用你原本就熟悉的方式,就练习不到了。效率不彰的练习不如不练。所以,如果要练习,就空出个下班时段,上网找个与工作无关的题目来练吧!譬如 Code Wars。
谜之声:「天才与庸才之间的差别不在基因、不在天分,而在刻意练习!」
ithelp2021
<<: Day 15 储存宝石:S3 架构 & 版本控管 (Versioning)
>>: Day.12 主从搭建 - 部署流程(Master Slave Replication )
前言 今天比较像是补充说明一下一些软件上的可以注意的点,基本上经过了软件(1) 跟软件(2) 之後,...
蒙特兰在过去曾经讲过,在别人藐视的事中获得成功,是一件了不起的事,因为它证明不但战胜了自己,也战胜了...
关於 Internet Protocol,我们最後来聊聊为了解决 IPv4 一些问题而提出的新版本 ...
公司的IT部门 IT不是超然於世的部门,而是运作於公司的一部分 甫加入公司的时候,已经有一个又一个的...
你听过的有AI框架有scikit-learn(机器学习)、tensorflow(深度学习)、pyto...