`
liuwei1981
  • 浏览: 771959 次
  • 性别: Icon_minigender_1
  • 来自: 太原
博客专栏
F8258633-f7e0-30b8-bd3a-a0836a5f4de5
Java编程Step-by...
浏览量:161216
社区版块
存档分类
最新评论

重构的目的

 
阅读更多

重构不是包治百病的万灵丹,绝对不是所谓的“银弹”。不过它的确很有价值,可以帮助你始终良好的控制自己的代码。

 

重构是个工具,用于以下几个目的:

 

1.重构改进软件设计

 

如果没有重构,程序的设计会逐渐腐坏。当人们只为短期目的,或是在完全理解整体设计之前,就贸然修改代码,程序将逐渐失去自己的结构,程序员愈来愈难通过阅读源码来理解原来的设计。重构很像在整理代码,你所做的就是让所有东西回到应处的位置上。代码的结构的流失是累积性的。愈难看出代码所代表的设计意图,就愈难保护其中设计,于是该设计就腐烂的愈快。经常性的重构可以帮助代码维持自己该有的形态。

 

完成同样一件事情,设计不良的程序往往需要更多的代码,这常常是因为代码在不同的地方使用完全相同的语句在做同样的事情。因此改进设计的一个重要方向就是消除重发代码。这个动作的重要性在于方便未来的修改。代码量减少并不会使系统运行更快,因为这对程序的运行计划没有任何明显的影响。然而代码量的减少将使未来可能的程序修改动作容易的多。代码愈多,正确的修改就愈难,因为有更多的代码需要理解。你在这儿做了点修改,系统却不如预期的那样工作,是因为你没有修改另一处——那儿的代码做着几乎完全一样的事情,只是所处的环境略有不同。如果消除重复代码,你就可以确定所有事物和行为在代码中只表述一次,这正是优秀设计的根本。

 

2.重构使软件更容易理解

 

所谓程序设计,很大程度上就是与计算机交谈:你编写的代码告诉计算机做什么事,它的响应则是精确按照你的指示行动。你得及时填补“想要它做什么”和“告诉它做什么”之间的缝隙。这种编程模式的核心就是“准确说出我所要的”。除了计算机外,你的源码还有其他读者:几个月之后可能会有另一位程序员尝试读懂你的代码并做一些修改。我们很容易忘记这第二位读者,但他才是最重要的。计算机是否多花了几个小时编译,又有什么关系呢?如果一个程序员花费一周时间;来修改某段代码,那才要命呢——如果他理解了你的代码,这个修改原本只需要一个小时。

 

问题在于,当你努力让程序运转起来的时候,不会想到未来出现的那个开发者。是的,我们应该改变一下开发节奏,对代码做适当修改,让代码变得更容易理解。重构可以帮助我们让代码更易读。一开始进行重构的时候,你的代码能正常运行,但结构不够理想。在重构上花一点点时间,就可以让代码更好的表达自己的用途。这种编程模式核心就是准确的说出我所要的。

 

3.重构帮助找到bug

 

对代码的理解,可以帮助找到bug。如果对代码进行重构,可以深入理解代码的作为,并恰到好处的把新的理解反馈回去。搞清楚程序结构的同时,也清楚了自己所做的一些假设。

 

Kent Beck说过一句话:我不是个伟大的程序员,我只是个有着一些优秀习惯的程序员。重构能帮助更有效的写出强健的代码。

 

4.重构提高编程速度

 

重构帮助你更快速的开发程序。

 

听起来有点违反直觉。当谈到重构时候,人们很容易看出它能够提高质量。改善设计、提高可读性、减少错误,这些都是提高质量。

 

但很重要的是,良好地设计师快速开发的根本——事实上,拥有良好的设计才可能做到快速开发。如果没有良好的设计,或许某一段时间内你的进展神速,但恶劣的设计很快让你的速度慢下来。你会把时间放在调试上,无法添加新功能。修改时间越来越长,因为你必须花越来越多的时间去理解系统、寻找重复代码。随着你给最初程序打上一个又一个补丁,新特性需要更多的代码才能实现。这是恶性循环。

 

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

分享到:
评论

相关推荐

    reconfiguration_配电网_配电网络重构_reconfiguration_配电网重构_配电网重构_源码.zip

    2. 重构目的:主要目标包括提高供电可靠性(减少停电时间),优化运行成本(降低线损),以及提升电力质量(平衡负荷,减少电压波动)。 3. 重构方法:通常采用开关操作,改变馈线连接,形成新的网络拓扑结构,以...

    Demo_CS_CoSaMP.rar_CoSaMP图像_CoSaMP图像重构_DEMO_cosamp_cosamp的代码

    CoSaMP通过迭代寻找最相关的系数向量,从而达到高效的重构目的。 在"Demo_CS_CoSaMP.m"这个MATLAB代码中,你可以看到如何实现CoSaMP图像重构的过程。首先,你需要根据代码中注释提示,调整图像路径以指向你想要处理...

    【EMD重构】.rar_EMD重构函数_IMF变量重构_tomorrowi4n_模态分解_重构

    它是由Huang等人在1998年提出的,目的是为了克服传统傅立叶变换等线性分析方法在处理复杂信号时的局限性。在EMD中,一个复杂的信号可以被分解为一系列简化的内禀模态函数(Intrinsic Mode Function,简称IMF)和残余...

    27丨理论一:什么情况下要重构?到底重构什么?又该如何重构?1

    本文将详细探讨重构的目的、对象、时机和方法,帮助开发者理解和掌握重构的核心理念。 **重构的目的(Why)** 1. **保持代码质量**:重构可以帮助我们及时发现并修复代码中的问题,防止代码质量逐渐恶化,降低维护...

    [电子书] 重构与模式

    重构的目的是使代码更加清晰、易于理解,减少潜在的错误,并提升软件的可维护性。在重构的过程中,开发者通过一系列步骤,如重命名变量、提取方法、合并条件表达式等,逐步改进代码质量。《重构与模式》一书详细讲解...

    重构.pdf_电子版_pdf版

    重构的核心目的在于提高代码的可读性、可维护性、可扩展性,最终目的是为了提升软件整体的质量。这一过程涉及到对现有代码的检查和改进,但并不会引入新的功能。重构是软件开发过程中的一个重要环节,与新功能的实现...

    软件重构讲义,自己整理的一个软件重构ppt

    重构的基本概念和目的,是软件重构讲义中首先阐述的内容。重构,顾名思义,是对现有软件代码进行重新构造,但这种改造并非为了添加新功能或者修复缺陷,而是为了改善软件的内部结构。Martin Fowler 在《重构:改善既...

    Martin Fowler《重构——改善既有代码设计》(中文版)

    重构的目的不在于改变程序的行为,而在于提升程序的内部结构,使其更加简洁、高效且易于理解。重构有助于减少程序中的冗余和复杂性,使得代码更容易被他人理解和接手,同时也为今后的迭代开发奠定坚实的基础。 书中...

    重构 中英双版

    3. **重构模式**:书中列举了大量具体的重构模式,每个模式都有一个清晰的名称、目的和实施步骤。这些模式覆盖了从消除重复代码到优化类与对象设计的各种情况,为开发者提供了实用的操作指南。 4. **测试驱动开发...

    重构 改善既有代码的设计 pdf 中文

    重构的核心目的在于改进代码的内部结构,从而使软件更加清晰、易懂、易维护。重构不是简单地重写代码,而是通过一系列小的步骤来逐渐改进代码的结构。在重构过程中,需要保证重构前后的代码在功能上等效,即外部行为...

    软件重构技术(重构介绍、重构原则、代码的坏味道。。。)

    重构是一种系统性的修改现有代码的过程,目的是提高代码的内部结构,使其更易于理解和修改,同时保持原有功能不变。它不涉及添加新功能或修复错误,而是专注于优化现有的代码结构。重构通常是随着项目的进展和需求的...

    重构_改善既有代码的设计 Java

    重构的目的在于提高软件的可读性、可维护性和可扩展性,进而降低维护成本,提升软件的长期价值。Martin Fowler所著的《重构:改善既有代码的设计》就是一本专注于Java语言重构实践的经典指南。 本书的核心是向读者...

    重构-改善既有代码的设计

    一直很喜欢重构这本书,但是由于自己记性不太好,书看过之后其中的方法总是记...免责声明:本书仅供个人学习研究之用,不得用于任何商业目的,不得以任何方式修改本作品,基于此产生的法律责任本人不承担任何连带责任。

    重构----改善既有代码的设计(完整中文扫描版PDF)

    这些重构技术的目的是让已经存在的、可能因缺乏设计而效率低下、难以维护和扩展的代码,变得更加灵活和可维护。 Martin Fowler是该领域的知名技术专家,他将自己在重构方面的实践经验融入书中,展示了如何将一个...

    我经历的重构

    - **重构的目的**:通过重构来建立一个更为清晰和美好的代码环境,从而激发开发者对于高质量代码的追求。 #### 2. 何时进行重构 - **即时重构**:遇到问题时即刻进行重构,避免问题积累。 - **交接重构**:员工...

    .java代码重构

    1. **重构的目的** - 提高代码质量:通过消除冗余代码,简化复杂的逻辑,使得代码更加清晰易懂。 - 增强可读性:良好的命名规范、合理的结构设计可以使其他人更容易理解代码的功能。 - 提升性能:通过优化数据...

Global site tag (gtag.js) - Google Analytics