如果测试失败时构建还能通过,就会提供关于安全性的一种错感。如果测试失败,那么让构建也失败:早一点从容地处理问题,总比以后问题半夜三更把您从梦中唤醒要好。
魔力机的气味
在本文谈到的所有气味当中,这一种也许是最难闻的,因为魔力机(magic machine)是那种刚好惟一能够构建一个公司的软件应用程序的硬件。这种情况看上去难以相信,实则不然。在我的职业生涯中,就多次碰到过它。当依赖性丢失,或者当不断累积的问题爆发时,这些机器就获得了所谓的魔力。
我们很容易看出,公司基础设施中的一台正常的机器是如何获得魔力的:随着时间的推移,开发者无意间在机器的脚本中添加了硬性的依赖性,包含了对目录路径的全限定引用,甚至安装了只有一台机器上有的工具,久而久之,构建在任何其他机器上再也不能运行了。图 3 就展示了一个例子:
图 3. 魔力机
对一台机器的硬编码引用,包括特定驱动器(例如 C:)的路径,以及机器上特有的工具,都是令一台机器着魔的罪魁祸首。每当看到对 C: 盘的引用,或者看到对特定工具(例如 grep)的调用时,应该马上更改脚本。如果发现自己声称 "C:\Program Files\ 目录在每台机器上都有" 的时候,也要三思。
不良格式也有气味
和主流语言中的编程格式一样,在管理构建脚本的时候,也有类似的考虑。当为构建脚本考虑编程格式的时候,需要考虑以下几个方面: