靠谱程序员必备技能——重构为什么要重构你可能正在面对一个遗留系统,增加一个需求要改动好几个文件,定位Bug经常要花掉一整天时间,修复一个Bug可能又制造了3个新的Bug。你也可能会为了软件设计和同事争得面红耳赤,讨论如何应对未来可能出现的需求变化。为了开发一个新需求,你打开一份源代码,完全不知所云嘛,你吐槽着谁能写出如此不堪入目的代码,于是决定查看版本记录,把这个家伙找出来鄙视一下。然后你在提交历史里看到了自己的名字…恭喜你,你进步了。如果你是一个积极进取的程序员,通常在几个月甚至几个星期之后就认不出自己写的代码。你总能发现更好的实现方式,让代码更加优雅。随着增加新特性或需求变更,代码会变得越来越难以维护。敏捷软件开发的十二条原则中有一条是:我们始终拥抱需求变化,哪怕是在软件开发的后期。为了达到这种状态,我们就要在开发过程中持续地优化代码。而重构这项技术,为我们提供了一种更可控的方式来优化代码。重构是什么重构,通常指的是「代码重构」,起源于Smalltalk圈子。在日常工作中,我们把重构既作为名词又作为动词来使用,作为名词时,它的意思是:对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。所以我们会说,「这里需要做一个重构」,「这个重构有点问题」等。而在其它时候,我们也会说:「我们来重构一下这段代码吧」,「我正在重构一个遗留系统」,这时就是把重构当做动词在用,它的意思是:使用一系列重构手法,在不改变软件可观察行为的前提下,调整其结构。重构本质上是一种代码整理技术,这项技术使得代码整理的效率更高,风险更小。如何做GitChat如何做接下来从几个方面来说说如何做重构:什么时候开始什么时候停止前提条件重构的过程什么时候开始重构不应该是一个单独的环节,应该融入到开发软件编写代码的过程中,就像使用版本控制系统提交代码一样,是一个必须做的动作。你不会跟项目经理说,我需要申请一段时间来提交代码,所以也不用说服项目经理给你时间重构。你可以在开发新功能,修复Bug的过程中就把重构做了,除了你的程序员同伴,没有人知道你做了什么。而他们会认为你做了一件了不起的事情,因为你让代码结构更清晰了,以后添加新特性就会更容易,而Bug也无处藏身。如果你采用TDD的方式(测试驱动开发),那重构已完全融入到了开发过程中。如果没有采用TDD,通常有四个时机可以考虑要不要重构:事不过三如果有段代...