编写可测试的代码,设计可测量的系统

Posted by LuckXiang on May 11, 2018

最近在回顾《程序员修炼之道-从小工到专家这本书》,看到“Use Tracer Bullets to Find the Target”一节,想起了自己独立完成的第一个API对接项目,这个项目有客户自己的应用层代码,也封装好了大部分接口。我要做的工作就是把他们的接口和我们的系统对接起来,我一开始以为所有的工作都要重新再来,没想到拿到手的东西是另外一个资深工程师搞了一个多月的东西,这是一个很老的工程师,工作十来年了吧,所有的代码都是真空编写的,编译环境都没搭好,我猜他是想把所有代码全部写完再调编译问题吧,我旁敲侧击问了他一下,呵呵,果然就是这个意思,我心中万只草泥马飞过。我在他的基础上打算把编译环境跑通,尝试了半天,发现代码里边编译问题实在是太多了,后来我把他写的所有代码全部删掉,从头编写makefile,搭建编译环境,项目总算逐步推动起来了。当然他还给我埋了一个坑,选了一个拼凑的基础库版本,当时太年轻,没想到公司某些版本管理居然是如此的混乱,后边整理补丁,升级版本花了不少功夫。从这个项目中,我领悟到了一个道理,每天工作编写的代码,都必须是可测试的,写代码之前,必须要把测试考虑进去,不管是单元测试也好,还是项目的测试环境也好,自己每天写的代码,必须要先测试环境过一遍。包括设计系统的时候,也必须要考虑到测量的问题,我怎么才能证明我的系统是稳定可靠的,我怎么证明我写的代码是稳定可靠的。如果出了问题,可能是哪里的问题,我应该怎么查?当然,我写这个也不是否定我的同事,该人的工作效率和解决问题的能力还是很强的。不过他这种行事风格,确实给别人带来了很多不必要的负担,团队总要有人擦屁股,努力提高自己的职业素养,才能受人尊敬,另外,远离损人利己的人。