快速业务通道

TDD实践之实用主义 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17

TDD实践之实用主义

时间:2011-06-01 infoq 李光磊

1. 为沟通选择语言

我们在一个海员管理系统的开发中遇到了问题,这个领域的专业术语我们很 难翻译。即使勉强翻译出了,也感觉辞不达意,无论是初看上去,还是过一段时 间再看都一头雾水。比如,我们写出了下面的测试用例:

public void test_should_return_NOT_pass_if_duty_higher_than_second_mate_or_second_ engineer_and_education_level_is_secondary_and_guraduated_after_2002_02 _01() {   …… }

但其中second mate/second engineer是什么意思呢? secondary的education level具体又是什么?

还有:

public void test_should_return_third_mate_course_for_jianxi_third_mate() {   …… }

jianxi_third_mate是什么? 等等。

当然,我们可以制定一个术语表,请专业人士先帮我们翻译好,然后在代码 中遵循这个术语表。然而随着需求的增加,术语层出不穷,并且有特定中国特色 的名词根本就没有对应的翻译,于是这个问题就一直困扰着我们。

而直到有一天,在一次重构中我们把上面的第一个测试用例重命名了一下, 一切似乎突然间开朗了:

public void test_应该算未通过_if_职务高于二副二管轮_而_学历只 是中专_并且_毕业时间晚于2002年2月1日() {   …… }

Team里的人纷纷围过来,看着这个跟需求描述里的验收条件几乎一模一样的 测试用例名称,感受到一种前所未有的清澈。大家几乎在几秒钟之内就做出了选 择:这种形式是可以接受的,而且表达能力更强,交流效果不错。

什么?使用中文作为函数名?这似乎只是那些被主流舆论鄙视的"汉语编程"研 究者才搞的东西,我们一直就被教育离这些东西远点,甚至汉语拼音都不推荐使 用,一个经常拿来做反面教材的例子就是数据库表的列名使用汉语拼音,这被看 作不专业的表现。又或者,以后团队中加入外国开发者怎么办?

幸运的是,我们是软件工程师,不是计算机科学家。学术理论可以极端,而 工程一定是某种折衷。定理由自然界精确遵守,而工程却是各种应力的人为平衡 。

具体到这个案例,让我们正视现实:

团队成员并不善长本项目领域的专业英语。

任何翻译都会造成一定的信息损失,尤其在一些具有中国特色的领域,比如" 中专"翻译为英语就很难像中文一样简洁直观。

在可预见的将来,不会有老外加入开发团队。

而选用中文却能够让我们更好的坚持以下原则:

代码除了完成功能, 另外一个重要的功能是交流。(我们选择了对团队来说 最有效的交流方式)

用测试用例的名字来描述需求。(用中文描述更精确, 易于理解)

当然我们也会失去一些东西,比如对上面提到的"应该坚持使用英文"原则的 放弃。在这里我们认为放弃这条原则的收益大于损失。一种损失就是失去了学习 英文的机会,比如上面最后一个测试用例,用中文写出来就是:

public void test_见习三副应该参加三副的培训() {   …… }

或者有人会说:"见习"的英语是"intern",常用词啊。然而系统中还有另外 一类角色,叫"实习三副"等,那才是"intern"。实习是实际动手,担当实际的职 责;见习是只看不练,跟在后面观摩学习。见习的英文单词是"noviciate",并 不为项目组所熟悉,而我们也不再关心它。

总之,在实践中应当权衡各种利弊,选择对你来说最有效的方式。

TDD实践之实用主义(2)

时间:2011-06-01 infoq 李光磊

2. 用大量测试来驱动

在项目组中曾经发生过自以为完成了某个特性,后来却发现漏掉了某些验收 条件,甚至是比较重要验收条件的事情。而这也是TDD经常被质疑的一点,就是 如何保证测试的完备性。因为总是

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号