重构不是包治百病的万灵丹,绝对不是所谓的“银弹”。不过它的确很有价值,可以帮助你始终良好的控制自己的代码。
重构是个工具,用于以下几个目的:
1.重构改进软件设计
如果没有重构,程序的设计会逐渐腐坏。当人们只为短期目的,或是在完全理解整体设计之前,就贸然修改代码,程序将逐渐失去自己的结构,程序员愈来愈难通过阅读源码来理解原来的设计。重构很像在整理代码,你所做的就是让所有东西回到应处的位置上。代码的结构的流失是累积性的。愈难看出代码所代表的设计意图,就愈难保护其中设计,于是该设计就腐烂的愈快。经常性的重构可以帮助代码维持自己该有的形态。
完成同样一件事情,设计不良的程序往往需要更多的代码,这常常是因为代码在不同的地方使用完全相同的语句在做同样的事情。因此改进设计的一个重要方向就是消除重发代码。这个动作的重要性在于方便未来的修改。代码量减少并不会使系统运行更快,因为这对程序的运行计划没有任何明显的影响。然而代码量的减少将使未来可能的程序修改动作容易的多。代码愈多,正确的修改就愈难,因为有更多的代码需要理解。你在这儿做了点修改,系统却不如预期的那样工作,是因为你没有修改另一处——那儿的代码做着几乎完全一样的事情,只是所处的环境略有不同。如果消除重复代码,你就可以确定所有事物和行为在代码中只表述一次,这正是优秀设计的根本。
2.重构使软件更容易理解
所谓程序设计,很大程度上就是与计算机交谈:你编写的代码告诉计算机做什么事,它的响应则是精确按照你的指示行动。你得及时填补“想要它做什么”和“告诉它做什么”之间的缝隙。这种编程模式的核心就是“准确说出我所要的”。除了计算机外,你的源码还有其他读者:几个月之后可能会有另一位程序员尝试读懂你的代码并做一些修改。我们很容易忘记这第二位读者,但他才是最重要的。计算机是否多花了几个小时编译,又有什么关系呢?如果一个程序员花费一周时间;来修改某段代码,那才要命呢——如果他理解了你的代码,这个修改原本只需要一个小时。
问题在于,当你努力让程序运转起来的时候,不会想到未来出现的那个开发者。是的,我们应该改变一下开发节奏,对代码做适当修改,让代码变得更容易理解。重构可以帮助我们让代码更易读。一开始进行重构的时候,你的代码能正常运行,但结构不够理想。在重构上花一点点时间,就可以让代码更好的表达自己的用途。这种编程模式核心就是准确的说出我所要的。
3.重构帮助找到bug
对代码的理解,可以帮助找到bug。如果对代码进行重构,可以深入理解代码的作为,并恰到好处的把新的理解反馈回去。搞清楚程序结构的同时,也清楚了自己所做的一些假设。
Kent Beck说过一句话:我不是个伟大的程序员,我只是个有着一些优秀习惯的程序员。重构能帮助更有效的写出强健的代码。
4.重构提高编程速度
重构帮助你更快速的开发程序。
听起来有点违反直觉。当谈到重构时候,人们很容易看出它能够提高质量。改善设计、提高可读性、减少错误,这些都是提高质量。
但很重要的是,良好地设计师快速开发的根本——事实上,拥有良好的设计才可能做到快速开发。如果没有良好的设计,或许某一段时间内你的进展神速,但恶劣的设计很快让你的速度慢下来。你会把时间放在调试上,无法添加新功能。修改时间越来越长,因为你必须花越来越多的时间去理解系统、寻找重复代码。随着你给最初程序打上一个又一个补丁,新特性需要更多的代码才能实现。这是恶性循环。
良好的设计师维持软件快速开发的根本。重构可以帮助你更快速的开发软件,因为它阻止了系统腐烂变质,甚至还可以提高设计质量。
分享到:
相关推荐
2. 重构目的:主要目标包括提高供电可靠性(减少停电时间),优化运行成本(降低线损),以及提升电力质量(平衡负荷,减少电压波动)。 3. 重构方法:通常采用开关操作,改变馈线连接,形成新的网络拓扑结构,以...
CoSaMP通过迭代寻找最相关的系数向量,从而达到高效的重构目的。 在"Demo_CS_CoSaMP.m"这个MATLAB代码中,你可以看到如何实现CoSaMP图像重构的过程。首先,你需要根据代码中注释提示,调整图像路径以指向你想要处理...
它是由Huang等人在1998年提出的,目的是为了克服传统傅立叶变换等线性分析方法在处理复杂信号时的局限性。在EMD中,一个复杂的信号可以被分解为一系列简化的内禀模态函数(Intrinsic Mode Function,简称IMF)和残余...
本文将详细探讨重构的目的、对象、时机和方法,帮助开发者理解和掌握重构的核心理念。 **重构的目的(Why)** 1. **保持代码质量**:重构可以帮助我们及时发现并修复代码中的问题,防止代码质量逐渐恶化,降低维护...
重构是软件设计中一种重要的技术,它的目的是为了使代码变得更加清晰、简洁、易维护和易扩展。重构的过程是通过一系列小步骤来修改代码,目的是为了提高代码的质量,而不是添加新的功能。 为什么需要重构? 在软件...
重构的目的不在于改变程序的行为,而在于提升程序的内部结构,使其更加简洁、高效且易于理解。重构有助于减少程序中的冗余和复杂性,使得代码更容易被他人理解和接手,同时也为今后的迭代开发奠定坚实的基础。 书中...
3. **重构模式**:书中列举了大量具体的重构模式,每个模式都有一个清晰的名称、目的和实施步骤。这些模式覆盖了从消除重复代码到优化类与对象设计的各种情况,为开发者提供了实用的操作指南。 4. **测试驱动开发...
《软件重构讲义》是关于软件开发中重构技术的一份资料,主要涵盖了重构的基本概念、目的、时机选择、流程以及代码质量改进等方面。重构是一种在不改变软件功能的前提下,通过改进代码结构以提升软件设计质量、可维护...
重构的核心目的在于改进代码的内部结构,从而使软件更加清晰、易懂、易维护。重构不是简单地重写代码,而是通过一系列小的步骤来逐渐改进代码的结构。在重构过程中,需要保证重构前后的代码在功能上等效,即外部行为...
重构是一种系统性的修改现有代码的过程,目的是提高代码的内部结构,使其更易于理解和修改,同时保持原有功能不变。它不涉及添加新功能或修复错误,而是专注于优化现有的代码结构。重构通常是随着项目的进展和需求的...
重构的目的在于使代码变得更加简洁、易读和易维护。 2. 重构的原则:包括何谓重构、两顶帽子、为何重构、何时重构、重构的挑战、重构、架构和YAGNI、重构与软件开发过程、重构与性能、重构起源何处、自动化重构等。 ...
一直很喜欢重构这本书,但是由于自己记性不太好,书看过之后其中的方法总是记...免责声明:本书仅供个人学习研究之用,不得用于任何商业目的,不得以任何方式修改本作品,基于此产生的法律责任本人不承担任何连带责任。
- **重构的目的**:通过重构来建立一个更为清晰和美好的代码环境,从而激发开发者对于高质量代码的追求。 #### 2. 何时进行重构 - **即时重构**:遇到问题时即刻进行重构,避免问题积累。 - **交接重构**:员工...
1. **重构的目的** - 提高代码质量:通过消除冗余代码,简化复杂的逻辑,使得代码更加清晰易懂。 - 增强可读性:良好的命名规范、合理的结构设计可以使其他人更容易理解代码的功能。 - 提升性能:通过优化数据...
这些重构技术的目的是让已经存在的、可能因缺乏设计而效率低下、难以维护和扩展的代码,变得更加灵活和可维护。 Martin Fowler是该领域的知名技术专家,他将自己在重构方面的实践经验融入书中,展示了如何将一个...
标题:“重构与设计模式” 描述:“内部培训资料:重构与设计模式” 标签:“设计模式,重构” 部分内容:“设计匠艺——软件开发修养篇” 在软件工程领域,重构与设计模式是提升软件质量和维护效率的关键技术。...
配电网重构的目标是在满足一系列约束条件下,通过改变开关状态,优化网络结构,以达到提高供电可靠性、降低运营成本、改善电压质量等目的。由于其多目标、多时段、多组合以及多约束的特性,配电网重构问题本质上是一...