现有代码结构及框架沿用的比较久,持续在其上新增功能,可维护性与可扩展性变得越来越差,随着需求不断增加,现有代码变得越来越臃肿复杂,变得很难维护,甚至出现较严重的性能瓶颈,一般这个时候我们可能就需要对代码进行改进和重构了。通过重构,可以减少多个模块的耦合,提高代码的扩展性与可维护性,有效地提升程序的性能。今天我们就来讲讲重构相关的内容。
1、何谓重构
每个人对每样东西都有自己的定义,为了沟通上的达到最佳效果,在这给出重构的定义。视上下文不同,“重构”这个词有两种不同的定义,第一种是以名词形式,第二种是以动词形式。
- 重构(名词):对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。
- 重构(动词):使用一系列重构手法,在不改变软件可观察行为的前提下,调整其结构。
重构就只是整理代码吗?从某种程度上来说,是的。但是我认为重构不止于此,因为它提供了一种更高效且受控的代码整理技术。重构的目的是软件更容易被理解和修改。你可以在软件内部做很多修改,但必须对软件可观察的外部行为只造成很小变化,或甚至不造成变化。与之形成对比的是性能优化。性能优化通过不会改变组件的行为(除了执行速度),只会改变其内部结构。但是两者出发点不同,性能优化可能除低代码的易理解性,而重构是为了提高代码的易理解性。
2、为何重构
也许您的态度倾向于尽量少修改程序:不管怎么说,它还运行得很好。您心里牢牢记着那句古老的工程谚语:“如果它没有坏,就不要动它。”这个程序也许没有坏掉,但是它造成了伤害,让你的生活比较难过,如代码难懂查找已有的BUG很困难,设计不合理导致修复BUG需要改动的地方很多且增加程序的臃肿程度,在效率驱动开发的今天,只会让程序慢慢趋向于复杂和难以掌控,直至没有人愿意接手或痛苦的工作着。
重构可以帮助你始终良好地控制自己的代码。重构可以改进软件设计,重构使软件更容易理解,重构可以帮助您找到BUG,重构可以提高编程速度。听起来重构可以提高编程速度违反直觉。我一直深信,良好的设计是快速开发的根本——事实上,拥有良好设计才可能做到快速开发。如果没有良好的设计,或许某一段时间内你的进度迅度,但是恶劣的设计很快就让你的速度慢下来,你会把时间花在调试上面,花在寻找BUG上面。在修改BUG的过程中,如果仍采用哪里出问题就临时修改的话,你在短时间内修改BUG的数目会很惊人,足以使领导对你的工作满意,然而这是一个恶性循环。
3、何时重构
常常有人讨论什么重构,怎么安排重构时间表,是不是应该每个月就专门安排两个星期来进行重构呢?几乎任何情况下我都反对专门拨出时间进行重构。在我看来,重构本来就不是一件应该特别拨出时间做的事情,重构应该随时随地进行。你不应该为重构而重构,像使用设计模式一样,不能为了模式而模式,你之所以重构,是因为你想做别的什么事,而重构可能帮助你把那些事做好。那么到底什么时候进行重构呢?下面是应该重构的时机。
三次法则,事不过三,三则重构。第一次做某件事时只管去做,第二次做类似的事会产生反感,但是无论如何还是可以去做,第三次再做类似的事,就应该重构。
3.1、添加功能时重构
此时,重构的直接原因往往是为了帮助我理解需要修改的代码——这些代码可能是别人写的,对这些代码进行重构,使我能更快理解它,然后我就会重构。之所以这么做是为了让我下次再看这段代码时容易理解,还有一个更重要的原因是,如果在前进过程中把代码结构理清,我就可以从中理解更多东西。代码的设计往往无法帮助我轻松添加我所需要的特性。每当看着有待于改进的设计时,对自己说:“如果用某种方式来设计,添加特性会简单得多。”这种情况下可以用重构来弥补早期重构上的缺陷。
3.2、修补错误时重构
调试过程中运用重构,多半是为了让代码更具有可读性。每当收到一份错误报告,这就是需要重构的信号,因为显示代码还不够清晰——没有清晰到让你看一眼就知道BUG所在。这时更具有针对性的重构能帮助加深自己的理解。
3.3、复审代码时重构
代码复审活动就是为了改善开发状况,在开发团队中传播知识,这时会有经验的同事可以提出好的建议,不必想象代码应该是什么样,可以“看见“是什么样,可以获得更高层次的认识,这时重构不仅可以获得建议,而且其中许多建议能够立刻实现。
4、如何重构
当想对发现的代码进行重构时,应该采用下面三步来执行重构。
- 第一步,为即将修改的代码建立一组可靠的测试环境。
- 第二步,要有效掌握代码重构的时机,使用科学的代码重构方法!(具体内容可以参见下面推荐的这本重构方面的经典书籍)
- 第三步,对重构的代码进行测试。
5、给大家推荐《重构的时机和方法》
《重构的时机和方法》是一本关于软件开发中重构技术的书籍。它以独特的风格和内容优势,为读者提供了全面而易于理解的指导,帮助他们在实际项目中应用重构技术,提高代码质量和开发效率。
本书有一下几个重要特点:
- 全面系统:本书从基础知识到高级技巧,涵盖了重构领域的各个方面。无论是初学者还是有经验的开发人员,都能够从中获得宝贵的知识和指导。
- 易干理解:作者注重清明了,使用简洁易量的语言,避免对多专业术语和复杂念,这使得懂者合够轻松地理解和应用书中所述的重构技术
- 实用性强:本书提供了大量实际案例和源代码示例,帮助读者将所学知识应用到实际项目中。通过具体案例演示不同类型的重构技术,读者可以更好地理解如何改进和优化代码。
本书在业界收到了广泛的赞誉,获得了业界专家的一致好评:
6、最后
《重构的时机和方法》是一本帮助软件开发人员提升代码质量和效率的重要参考书籍。无论你是初学者还是有经验的开发人员,都能够从中获得宝贵的知识和技巧。通过学习本书所述的重构技术,你将能够编写出更易于理解、维护和扩展的高质量代码。让我们一起探索重构的世界,打造更优秀的软件!购买链接:点击查看