今天说的这个词来源于软件开发。
重构(Refactoring)就是通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性。
作为程序员的我,一直在努力给代码做着重构。刚接触这个行业,也不会去做任何的重构,只是在不停的堆砌代码。因为不了解它的概念,所以便无缘它的精髓。有缘接触之后,经过一次次的体验,这两个字已经映在了我所写的所有代码中。
自觉我是一个还懂得变通的人,但是简单的道理还是无法形成类比。
直到最近才突然醒悟,原来重构的理念不只可以打磨代码,更加可以敲打敲打生活。
生活中我是一个容易激进的人,总是一个想法要么是南,不行的话,一下子就会调向北,明显是个感性的人。但是,重构代码时我喜欢小步慢走,一次只做好一件事,我绞尽脑汁希望每一步都可以做的更好,工作中又是一个比较理性的人。
之前当有这种反差时,恍惚以为自己有两重人格,现在想来也许只差那么一点变通的助力。
也许在相同的时间内,在工作中思想更加成熟。
也许在生活中练习的时间太少,练习失败之后再次爬起来的次数更少。以至于年纪到了,心里成熟度离及格线还差得很远。
回头想想,应该是我一直对代码在做重构(最开始的时候我也是激进的,经过了无数次失败的经验并学习了很多大师的经验),而我很少对生活做重构。
生活这个项目比程序要复杂的多,它是一个大型的复杂的需要多人协作的项目。所以,生活不是在堆砌时间。生活需要不断打磨,不断设计,不断地重构。
虽然复杂,只要有意识开始,小步前进。重构的好处就在于不是一下子要完全实现,而是一小步一小步靠近目标,所以即使再复杂的项目都可以一点一点的分解。有想法就每天前进一小步,没想法可以暂时保持现状,每前进一小步都是be better。
最重要的第一步是:协作,团队中每个人的认识首先是一致的。
说到这个重要性,引用Martin Flower(代码重构大师)书中的故事。
两个家伙的车子在山顶附近抛锚了,于是他俩走下车,一人走到车的一头,开始推车。经过毫无成果的半小时之后,车头那家伙开口说道:‘我从来不知道把车推下山这么难!’另一个家伙答道:“嘿,你说‘推下山’是什么意思?难道我们不是想把山推上山吗?”
第一步走好了,需要想想,哪些需要做重构,怎么去做?
带着这个疑问开始重构的设计,要想找到哪些需要做重构,需要对自己走过的路好好做一个复盘。