TDD实践之实用主义 - 编程入门网
TDD实践之实用主义时间:2011-06-01 infoq 李光磊1. 为沟通选择语言 我们在一个海员管理系统的开发中遇到了问题,这个领域的专业术语我们很 难翻译。即使勉强翻译出了,也感觉辞不达意,无论是初看上去,还是过一段时 间再看都一头雾水。比如,我们写出了下面的测试用例:
但其中second mate/second engineer是什么意思呢? secondary的education level具体又是什么? 还有:
jianxi_third_mate是什么? 等等。 当然,我们可以制定一个术语表,请专业人士先帮我们翻译好,然后在代码 中遵循这个术语表。然而随着需求的增加,术语层出不穷,并且有特定中国特色 的名词根本就没有对应的翻译,于是这个问题就一直困扰着我们。 而直到有一天,在一次重构中我们把上面的第一个测试用例重命名了一下, 一切似乎突然间开朗了:
Team里的人纷纷围过来,看着这个跟需求描述里的验收条件几乎一模一样的 测试用例名称,感受到一种前所未有的清澈。大家几乎在几秒钟之内就做出了选 择:这种形式是可以接受的,而且表达能力更强,交流效果不错。 什么?使用中文作为函数名?这似乎只是那些被主流舆论鄙视的"汉语编程"研 究者才搞的东西,我们一直就被教育离这些东西远点,甚至汉语拼音都不推荐使 用,一个经常拿来做反面教材的例子就是数据库表的列名使用汉语拼音,这被看 作不专业的表现。又或者,以后团队中加入外国开发者怎么办? 幸运的是,我们是软件工程师,不是计算机科学家。学术理论可以极端,而 工程一定是某种折衷。定理由自然界精确遵守,而工程却是各种应力的人为平衡 。 具体到这个案例,让我们正视现实: 团队成员并不善长本项目领域的专业英语。 任何翻译都会造成一定的信息损失,尤其在一些具有中国特色的领域,比如" 中专"翻译为英语就很难像中文一样简洁直观。 在可预见的将来,不会有老外加入开发团队。 而选用中文却能够让我们更好的坚持以下原则: 代码除了完成功能, 另外一个重要的功能是交流。(我们选择了对团队来说 最有效的交流方式) 用测试用例的名字来描述需求。(用中文描述更精确, 易于理解) 当然我们也会失去一些东西,比如对上面提到的"应该坚持使用英文"原则的 放弃。在这里我们认为放弃这条原则的收益大于损失。一种损失就是失去了学习 英文的机会,比如上面最后一个测试用例,用中文写出来就是:
或者有人会说:"见习"的英语是"intern",常用词啊。然而系统中还有另外 一类角色,叫"实习三副"等,那才是"intern"。实习是实际动手,担当实际的职 责;见习是只看不练,跟在后面观摩学习。见习的英文单词是"noviciate",并 不为项目组所熟悉,而我们也不再关心它。 总之,在实践中应当权衡各种利弊,选择对你来说最有效的方式。 TDD实践之实用主义(2)时间:2011-06-01 infoq 李光磊2. 用大量测试来驱动 在项目组中曾经发生过自以为完成了某个特性,后来却发现漏掉了某些验收 条件,甚至是比较重要验收条件的事情。而这也是TDD经常被质疑的一点,就是 如何保证测试的完备性。因为总是 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |