《重构-改善既有代码的设计》读后感

因为近期也在做重构方面的工作,所以就又简单地把这本书翻了一遍。在重构的过程中无非遇到到都是作者提到的那些问题:冗长的函数、不合理的函数命名和变量命名、复杂的条件逻辑、还有就是性能问题,如何才能做到一次成功的重构?

一、重构是什么?

重构(refactoring)的定义:对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。重构是一种经过千锤百炼形成的有条不紊的程序整理方法,可以最大限度地减少整理过程中引入错误的几率。

记得在中国软件开发者大会上大辉在谈他们社区的重构历程大概意思是:实际上80%代码都是好的,我们只需要改善那20%;到底是推到重来是还是在原有的基础上重构,推到重来就能保证没有20%的烂代码吗?或许没有最烂只有更烂;重构就是悄悄进村,在用户没有知觉的情况下服务变好了。

重构的第一步
1:为即将修改的代码建立一组可靠的测试环境。
2:以微小的步伐修改程序。如果你犯下错误,很容易便可发现它。
3:从更改变量名做起,任何一个傻瓜都能写出计算机可以理解的代码。唯有写出人类容易理解的代码,才是优秀的程序员。

重构的节奏
测试、小修改、测试、小修改、测试、小修改…

添加新功能&重构
使用重构技术开发软件时,你把自己的时间分配给两种截然不同的行为:添加新功能,以及重构。添加新功能时,你不应该修改既有代码,只管添加新功能。重构时就不能再添加新功能,只管改进程序结构。软件开发过程中,我们可能会经常为此纠结,如果把现有程序的结构修改一下,添加新功能会容易的多。但是新功能添加以后又发现自己的编码整个程序难以理解,又得重构…

二、为什么应该重构?

重构改进软件设计
1:愈难看出代码代表的设计意图,就愈难保护其中设计,于是该设计就腐败的愈快。经常性的重构可以帮助代码维持自己该有的形态。
2:完成同样一件事情,设计不良的程序往往需要更多的代码,这常常是因为代码在不同的地方使用完全相同的语句做同样的事。代码愈多,正确的修改就愈困难,因为有更多的代码需要理解。消除重复代码,这是优秀设计的根本。

重构帮助找到bug
Kent Beck:“我不是伟大的程序员,我只是个有着一些优秀习惯的好程序员。”重构能够帮助我们更有效地写出强健的代码。

重构提高编程速度
良好的设计是维持软件开发速度的根本。重构可以帮助你更快速递开发软件,因为它阻止系统腐败变质,它甚至还可以提高设计质量。

三、怎么重构?

重新组织函数
对函数进行整理,使之更恰当地包装代码。因为Long Methods(长函数)包含太多的信息,这些信息有被函数错综复杂的逻辑掩盖,不易鉴别。
使用简短而命名良好的函数的好处是:
1:如果每个函数的颗粒都很小,那么函数被复用的机会就更大;
2:这会使高层函数读起来像一系列注释;
3:如果函数都是细粒度,那么覆写也会更容易些;

简化条件表达式
程序之中,复杂的条件逻辑是最常导致复杂度上升的地点之一。和任何大块头代码一样,你可以将它分解为多个独立的函数,根据每个小块代码的用途,为分解而来的新函数命名,并将原函数中对应的代码改为调用新建函数,从而更清楚地表达自己的意图。

关于重构本书远远不止讲这么点,我只是把我这次重构中遇到较多的类似问题进行了摘录。

 

欢迎关注下方“非著名资深码农“公众号进行交流~

发表评论

邮箱地址不会被公开。