从《画皮》里孙俪饰演的降魔人,《倩女悠魂》里古天乐饰演的猎妖师,到《西游》里年轻的驱魔人陈玄奘(文章饰)。不知道为什么,每个故事的驱魔工作者们无一例外,都是蓬头垢面,衣衫褴褛的造型。我一直在想,是什么样的工作性质,让他们如此狼狈不堪:爬高山,钻洞穴,寂寞伴身,学会守候……
我本人所在项目的代码库里,包含了从上世纪八十年代到现在,跨度将近三十年的代码,这个样本都适合做代码考古了,而公司目前有几百人正在从事这套软件的维护工作,维护工作的绝大多数时间就是在与遗留代码战斗。他们需要深入代码洞穴,攀登代码树,在错综复杂的逻辑结构中跟踪每一步可能的分支结点;除了要抓到贻害一方的缺陷,并且还必须在有限的时间里完成这一切工作,这就像美剧里演的一样,一个人拿着枪指着你的头,掐着秒表,逼着你在秒表归零之前完成复杂的网络攻击任务。作者把软件维护工程师们比做软件驱魔人,这是多么贴切的比喻。我现在才惊醒,原来我身边的人本应如孙俪一样俊俏,像古天乐一样有型,似文章一般阳光清纯,而“伟大”的降妖除魔工作,却让他们一个个如降魔人,猎妖师和陈玄奘一般狼狈不堪。
最近听到一个真实的故事:有位1990年出生的女同事,为了解决一个BUG,不得不修改一段1993年编写的遗留代码。加班到晚上八九点之时,这位女同事大发感慨“当我还只有三岁的时候,就有一位怪叔叔写了一段代码,等20年后我长熟了再修改。” 在笑喷的同时,我们也在沉思,还有多少遗留代码是我们孩提时就已经存在,并且需要我们去修改的呢?或者,我们给正在成长的幼儿园宝宝们,又准备了多少的“遗产”呢?前人挖坑,后人填坑,子子孙孙无穷尽也,这会成为我们这些软件从业者的常态吗?
作者Bill Blunden试图通过Software Exorcism: A Handbook for Debugging and Optimizing Legacy Code,告诉程序员们如何预防掉入软件维护的泥潭,冠冕点的说法,叫做从源头抓起。如果一旦进入缺陷的修改,如何进行调试,针对软件性能的提升,又有什么比较好的方法。从整本书的组织角度来看,条理性比较强。作者不求面面俱到,但从实用性的角度,还是给出了比较多的方法介绍和建议,如防御性编程,单元测试,软件跟踪,调试,优化,甚至调试器的内部实现,都有提及。本书非常适合初入软件维护队伍的从业者,对维护行列的老手来说,则会略觉浅显,但系统性的总结也是一个不错的参考。当然,对于编写软件的从业者来说,这也是一部值得学习的图书,第一部分关于如何预防,防止再次编写难于维护的代码就是不错的建议,同时,关于调优部分也一样受用。
在市面上各种编程语言介绍之类的图书大行其道的当下,这样一部专门讲授如何维护遗留代码的图书就显得异外扎眼。作者并没有提及太过高深的理论或技法,让人的感觉是更多的内容都是来自作者一线维护工作中的点点滴滴的经验总结。
参加本书翻译的几位译者都是IT从业人员,有着近十年的一线软件研发和维护经验,书中的描写更能引起一些共鸣,这也是我们将此书介绍给国内读者的初衷。当然,译者们翻译经验有限谴词造句难免会有出入或生涩之处,请读者批评指正,多多包涵。
感谢华章图书的编辑谢晓芳,及其耐心细致的编辑工作,她是我们见过的最有耐心的一位编辑,容忍我们一次又一次的延迟交稿,如果没有她这些可贵的品质,本书不可能出版。
感谢我们团队的小伙伴们,他们利用晚上的闲暇时光,帮助我们一起审读译稿,感谢公司给我们创造了一个开放宽松的学习实践环境,我们可以将书中所学传播到工作中,践行各种策略、方法和实践。
我们的小伙伴们:郑建琴,王刚,余鹰伟,周峰,凌建发,宓媛珊,吴恩平(排名不分先后),感谢你们。
译者
于杭州, 2014年下雪的春天 - End -