分享 为什么用 Cucumber, 及根据抽象的层面选择工具

knwang · 2012年11月11日 · 最后由 woaigithub 回复于 2012年11月16日 · 3317 次阅读

@poshboytl 在下面这个贴里呼唤了我,我就写些想法。。展开的比较大,就独立成贴听听大家的意见。

http://ruby-china.org/topics/6650


我推崇选择工具为任务所在的抽象层面服务 - pick tools for the abstraction level that you work on.

工具的效率是一个因素,另一个很大的因素是设计和开发很大程度上是个创造的过程,而组好的工具是能帮助创造本身的工具。合适的工具本身会帮助你集中思考某层面需要的东西,有利于发散性的创造过程。

举几个例子 -

原型图的时候我喜欢 Balsamiq 一类的工具 - 明白告诉你就是粗狂,快速做 n 个不同的原型,扔了在做,做了在仍,直到找到合适的,如果用 OmniGraffle 这类的东西都可能会不经意的太注重细节了。

写对象交互的代码测试的时候用 Rspec, 在写 spec 的时候不知道该怎么设计的代码, 等到写了几个 spec 后会忽然豁然开朗了,正是因为 Rspec 工具本身的小模块, 功能期待,对象交互期待这些功能会引导你思考这个侧面上的东西 - 侧重交互及模块化而不是怎样堆出一个 30 行的 method 来实现一个功能。

行为测试是测试用户的行为,对用户与界面交互最好的 DSL 就是自然语言。用这样的语言会让你真正从用户行为流程来思考, 而不是拘泥于具体的实现过程。没错,这里面可能要多写一些类似 regex matching 的东西,但这些相对于其提供的好处来说是非常值得的。

在说远一些, 语言不仅是表达思想的工具,更是约束或者说结构化思想的模具 。 比如我回家说东北话的时候会发现自己忽然很豪放。编程语言也是这样,学一门编程语言最大的好处是能带来一个新的视角,提升或集中思维的层面。如果只是学一套新的语法就每什么意思了。而这个也是设计成功的 DSL 所能带来的。

喜欢。 程序员在某种语言环境里呆久了,有时候会变的很固执,缺少换位思考的能力。换个语言场景是好事情。个人觉得「换位思考的能力」对于程序员创业特别重要。

比较赞同,我昨天看了下 cucumber,感觉有些繁琐。是我没看懂么?也没有简单的例子。

#1 楼 @sundevilyang 嗯。做程序员久了,也会变得固执 :) #2 楼 @chenge 怎么感觉繁琐呢

#3 楼 @knwang 还不错,个人觉得 test/unit 就可以了。可能这个对大型程序有用,组织性似乎清晰些。

#3 楼 @knwang 原本打算放弃学习 cucumber 了。现在看来还是很有必要的啊。

合适的工具本身会帮助你集中思考某层面需要的东西,有利于发散性的创造过程。

这句话对我很有意义。谢谢!

Dear @knwang 这两天忙得论坛都很少上。才看到。 我非常有兴趣到时候详细和你聊聊你的工作方式.... 非常有意思.... :D

#5 楼 @blueplanet 是这样的,而且很重要的一点是要先从外面发散 - 创造 - 集中 - 锁定,再一层一层地向里面推进。

#6 楼 @poshboytl 好啊, 很高兴和大家交流

编程语言也是这样,学一门编程语言最大的好处是能带来一个新的视角,提升或集中思维的层面。

这句话这两年开始有体会了,以前一直工作在.NET 平台,这两年开始学习 python,linux,ruby,最近集中学习 ror,新视角,新思维方式,慢慢的有了一点点感觉!!

#7 楼 @knwang 合适的工具帮助我们创造,确实是这样的,可以集中精力做创造的事 #2 楼 @chenge http://cukes.info/ 这个很好

需要 登录 后方可回复, 如果你还没有账号请 注册新账号