对于重构一词,很多人对它还停留在模糊的概念上,摸不清重构是什么,于是害怕影响项目进度或质量就会让人“谈重构色变”。下面我们从重构中获得什么,重构会不会造成严重的影响,有没有什么原则等角度即探讨一下重构的本质。
1、重构的目的
“代码结构的流失有累积效应,当人们只为短期目的而修改代码时,他们经常没有完全理解架构的整体设计,于是代码逐渐失去了自己的结构,程序员越来越难通过阅读源码来理解原来的设计。”
重构这件事想解决的就是上述问题,把难懂的代码变得容易理解,使得后续开发的人(极有可能这个人是自己)很容易在原来的基础上修改,重构是纯粹从经济利益角度出发的,而不是一味追求整洁光亮的代码,不要掉入“整洁的码”“良好的工程实践”之类道德理由的陷阱。选择重构的唯一理由就是能让我们更快,开发功能变快、修复 bug 变快、交接代码变快。
2、软件开发如同行军
我们用左腿右腿来描述软件开发。在软件开发时,添加新功能先迈出了左腿,但之后发现修改一部分设计会好添加很多,花上十分钟进行重构迈出右腿,再继续添加功能…如此往复,我们的左右腿迈开了,唰唰唰快速而稳健地向前走。在这个过程中我们左腿要迈,右腿也要迈。当然,不是说只迈一条腿就走不动路,完全可以拖着走嘛,只是那样不够稳健,就像一个瘸了腿的人。