一次成功的重构实践1 - 概述
黄国强 2019/1/20
很长时间没写blog了,原因很简单,工作基本上遇不到问题,因而思考少了,自然也没有写东西的动力。
这次年会之所以拿到了公司特殊贡献奖,是因为去年将原先的软件架构重写,使公司软件发生了有目共睹的巨大变化。在这里总结一下重构过程。
重构前与重构后的解决方案比较:
图中是原先的解决方案和现在解决方案的比较,从中可以看到,整个解决方案只有一个工程,所有代码都写在这个工程里。整个项目代码是4万行。
而现在的解决方案,由25个工程组成,代码是分散在这25个工程里。代码总行数是十八万行。
刚到公司的时候,拿到软件的源码,认为这是个小case,因为我在上一家公司,开发并维护的解决方案是40万行。所以几万行的项目,还不是随便搞搞就行了。接手后才发现完全不是怎么回事。
因为公司出去的每一台机器都是从某个版本改过来的,换句话,公司软件版本有几十个,也就是说,我要修改和维护的不是一个四万,而是n个四万。这个n可能是3位数。想到这是不是有崩溃的感觉。
我不是那种遇到困难轻易放弃的性格的人,而且这个问题从软件角度理论上是可以解决的。
我定下了两个目标,一是统一版本,二是模块化。
重构背后运用到的技术:
统一版本遇到第一个问题就是设备硬件的不同。硬件不同主要体现在两个方面,首先是控制方案的不同,其次是组成机构的不同。
控制方案不同可以用建一个控制虚拟类来解决。而具体的控制方案是这个虚拟类的继承类。
组成机构的不同可以通过配置文件来解决。
模块化就是将不同机构放在不同的dll中,每个人负责几个机构,改变过去一个人负责一台设备的局面。专业化程度得到提高。
说起来很简单,做起来还是很辛苦的。类似艺术家一样,做出一个好的作品过程本身就能体会到很多乐趣。而之前所有的付出都是值得的。