作者yoco315 (眠月)
看板Soft_Job
标题Re: [闲聊] 笑谈软体测试的几个阶段(四) 累积测资
时间Mon Mar 26 22:49:29 2012
※ 引述《TonyQ (自立而後立人。)》之铭言:
: -----------------------------------
: 本文开始
: -----------------------------------
: 上一篇我们谈到程式码的可测试性,然後你会发现,
看了你经历这麽多,慢慢靠自己体悟到可测试性的重要,很感动 XD
也很庆幸自己,在还没有经历这些之前,就已经被灌输可测试性的重要。
忘记是在什麽地方看到别人推荐这个影片:
《Unit Testing》
http://youtu.be/wEhu57pih5w GoogleTechTalks
影片开始没多久,就直接点明重点:
「我没办法教你写测试,只能教你写出可测试的程式码。」
因为不可测试的程式码,交给谁都没办法测试(意指单元测试)。
很多人都会面临一个问题:「我不知道怎麽测我的程式码,但是我知道怎麽测你的!」
两份程式码的差异就在可测试性。
怎麽写可测试的程式码,比较难教,
但是怎麽写不可测试的程式码,大家应该是一看就懂 XD
《How to Write 3v1L, Untestable Code》
http://tinyurl.com/633e97
其实不用看就懂了,大家平常写出来的就是不可测试的程式码 XD
我自己第一次看的时候真的很讶异:
「天哪……我从来没想过我写的程式码根本是不可测试的……」
好在作者也有说,他自己也花了好几年才学会这件事,
要写出可测试的程式码是需要学习跟练习的。
文章里某些点我初看觉得根本没道理而且违反直觉,
但是後来在工作上就慢慢体会到其价值。
慢慢的,我看一份程式码好坏的标准改变了,
回头看到自己以前的程式就觉得很多地方架构设计不良。
我想到我在某处曾经看到一篇 D Programming Language 的文章,
讲的是 pure 这个用来修饰函数的关键字,描述 pure function 的特点。
pure function 就是这个函数的结果仅跟传给他的参数有关。
(pure member function 的结果仅跟传入的参数跟 data member 有关)
後来我想想,那篇《How to Write 3v1L, Untestable Code》,
讲的好几点其实都是在讲 non-pure function。
所以後来我领悟一件事,要怎麽写 testable code?
只要写程式的时候把一个想法惦念在心上就可以了:
「我的 function 要尽可能的 pure」
只要满足这条,写出来的程式码就很接近 testable co
--
To iterate is human, to recurse, divine.
递回只应天上有, 凡人该当用回圈. L. Peter Deutsch
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 182.235.170.158
1F:→ yoco315:阿勒... 不小心按到送出... 算了 XDDD 03/26 22:50
2F:推 Ting1024:感谢分享,有空再来体会看看 03/26 23:23
3F:推 loveme00835:XD 03/26 23:30
4F:推 ledia:同意, 如何写出 testable 的 code 比较重要 03/26 23:35
5F:推 tyc5116:藉这标题问一下,能不能写个范例,说明可测试和不可测试的 03/27 07:22
6F:→ tyc5116:差别啊?坊间的书有去找过了,没找到我想要看的 03/27 07:22
8F:推 TonyQ:推~ 03/27 10:25
9F:推 pracinverse:push 04/13 00:29