你的代码活着吗?

jopen 9年前

什么是 legacy code? 没有自动测试保护的就是 legacy code 。

-Michael Feathers, 《Working Effectively with Legacy Code》

讲直白一点,legacy code 就是没爹没娘没靠山,被人射后不理的产物。谁都可能欺负它、弄坏它,简直就是一直像死了般却仍在线上活着的产品代码。没有任何一个人喜欢跟死气沉沉的代码打交道。

你的代码活着吗?

图片来源:史上最强哲学入门

梵我合一中的重要概念:我存在的意义取决于感知这个世界,所以我存在。

-古印度哲学家,耶耆尼伐尔克

Production code 本身的存在,其实是没有任何意义的,那就只是骨子里 0 与 1 的组合,以一种符合规则、特殊文法限制的一种语言方式所呈现的文字罢了。而这样的东西静静地摊在萤幕上,存在于某种形式的储存体中,其实一点意义都没有。

Production code 只有动起来,才有生命。

而它的意义取决于当它动起来时,能为谁带来什么样的好处,为谁解决什么样的问题,也就是 user story 的三个关键点,这说明了这段 code 为什么需要存在,为何而活。

但只有这样的解释仍然不足以让它真实的活着,只有动起来才是真实的活着。怎么让它动起来呢?使用者该怎么用它呢?使用者的需求是什么呢?

最简单的方式就是用测试程序去模拟该怎么使用它,它会怎么动起来,当它如同预期动起来时会有什么样的改变,就能为某些人带来价值,这才是 production 活着的意义。

测试程序的目的,在于让 production 能活着,确定它能如同预期般的运作。

测试程序的意义,在于描述着什么样的情况下 production code 会怎么运作,在于描述:使用者应该怎么使用 production code 。

与死气沉沉的 legacy code 相比,另一种则是跟着测试程序共生,一直活着的 production code 。

那是种活跳跳、新鲜的程序代码,充满活力真实活着的程序代码,需求喜欢找它互动,因为感觉放心可靠而总是无后顾之忧。

产品代码、测试程序、活文件他们三兄弟总是团结一致,这才叫「活着」的产品、「活着」的程序代码。

测试程序就是 production code 的心跳,就是 production code 活着的证明,就是 production code 的维生器,就是 production code 的使用说明书,就是使用者故事的出路,就是解决使用者需求的方式。

想找个例子比喻一下大家都不喜欢和 legacy code 打交道的感觉,我脑袋不自觉地浮出一个「无间道」的画面。琛哥说:「你见过有人跟死尸握手的吗?」。

你的代码活着吗?

你的测试程序与产品代码,有达到梵我合一的境界吗?

来自: www.dotblogs.com.tw