上面是重构的学术解释,相信一些大神是可以直接一步到位的领略它的意思。我比较喜欢通俗易懂的解释:你要问我“重构就只是整理代码吗?”在某种角度来说还真是。but!重构肯定有其独到的地方:它还提供一种更高效且受控的代码整理技术。
划重点哈!
作者还对重构进行了另外两方面的扩展。让我一起来看下还有什么好玩的:
重构的目的是是软件更容易被理解和修改。
也就是说让你的修改但你只能对软件的可观察的外部行为造成很小的变化甚至不造成变化。和重构形成对比的是**性能优化**(我反正一开始觉得这两个都是一样的),差就差在性能优化通常不会改变组件的行为(除了执行速度)指挥改变其内部结构。但是!这两个的出发点不同:**性能优化往往是代码较难理解,但是为了得到所需的性能你不得不这么做。**重构不会改变软件的可观察的行为
也就是说重构之后软件的功能一如以往。所有人除了你自己都不知道有东西改变过(就像鬼子进村悄悄的进行,打枪的不要)。2.为何重构?重构有四大好处:
Anyfoolcanwritecodethatacomputercanunderstand.Goodprogrammerswritecodethathumanscanunderstand.任何一个傻瓜都能写出计算机可以理解的代码。唯有写出人类容易理解的代码,才是优秀的代码。
作者给出了一个三次原则,让我们来看一下:
三次法则:事不过三,三则重构。
此章节只可意会不可言传。
当你使用一种可以提高生成力的新技能时,一定要仔细思考此场景是不是适用。别人的“好媳妇”在你着没准就没那么好用。
假如你发现你确实需要重构,请参考仔细阅读下面你可能会遇到的难题:
数据库难在哪?
1.绝大多数的程序都和背后的数据库结构紧密的耦合在一起。2.数据迁移接口修改难在哪?
1.已经发布了的接口何时不该重构?
分解临时变量(SplitTemporaryVariable)。你的程序有某个临时变量被赋值过一次,它既不是循环变量,也不被用于收集计算结果。针对每次赋值,创造一个独立、对应的临时变量。