http://www.cnblogs.com/lane_cn/archive/2006/02/05/325782.aspx
什么是重构
重构,用最简单的一句话说:就是要在不改变系统功能的情况下,对系统的内部结构进行重新调整。重构的最直接目的在于改进软件系统的内部架构。一个好的结构可以更加适应于需求的变化,更好的满足客户的需求,最大限度的延长软件系统的生命周期。
为什么要重构
在不改变系统功能的情况下,改变系统的实现方式。为什么要这么做?投入精力不用来满足客户关心的需求,而是仅仅改变了软件的实现方式,这是否是在浪费客户的投资呢?
重构的重要性要从软件的生命周期说起。软件不同与普通的产品,他是一种智力产品,没有具体的物理形态。一个软件不可能发生物理损耗,界面上的按钮永远不会因为按动次数太多而发生接触不良。那么为什么一个软件制造出来以后,却不能永远使用下去呢?
对软件的生命造成威胁的因素只有一个:需求的变更。一个软件总是为解决某种特定的需求而产生,时代在发展,客户的业务也在发生变化。有的需求相对稳定一些,有的需求变化的比较剧烈,还有的需求已经消失了,或者转化成了别的需求。在这种情况下,软件必须相应的改变。
考虑到成本和时间等因素,当然不是所有的需求变化都要在软件系统中实现。但是总的说来,软件要适应需求的变化,以保持自己的生命力。
这就产生了一种糟糕的现象:软件产品最初制造出来,是经过精心的设计,具有良好架构的。但是随着时间的发展、需求的变化,必须不断的修改原有的功能、追加新的功能,还免不了有一些缺陷需要修改。为了实现变更,不可避免的要违反最初的设计构架。经过一段时间以后,软件的架构就千疮百孔了。bug越来越多,越来越难维护,新的需求越来越难实现,软件的构架对新的需求渐渐的失去支持能力,而是成为一种制约。最后新需求的开发成本会超过开发一个新的软件的成本,这就是这个软件系统的生命走到尽头的时候。
重构就能够最大限度的避免这样一种现象。系统发展到一定阶段后,使用重构的方式,不改变系统的外部功能,只对内部的结构进行重新的整理。通过重构,不断的调整系统的结构,使系统对于需求的变更始终具有较强的适应能力。
分享到:
相关推荐
- **提升设计质量**:重构不仅可以改进现有的设计,还能为应对新需求提供更加灵活的基础。 - **减少错误**:借助自动化测试工具可以在重构过程中及时发现引入的新错误,减少后期修复成本。 ### 重构的工具 为了...
1. **重构基础**:介绍重构的基本概念,包括为什么要重构,重构的目标,以及重构与调试、增量开发的区别。 2. **重构技巧**:详细阐述各种重构手法,如提取函数、移动函数、提取类等,以及何时、如何使用它们。 3....
为什么要重构?重构可以助你找到程序错误、提高编程速度、提高设计和编码水平、增加新功能、修补错误、Review 代码时均可一并重构。何时重构?可以在增加新功能时一并重构、修补错误时一并重构、Review 代码时一并...
重构是软件开发过程中的一个重要环节,它涉及到代码的优化、设计改进和质量提升,而不改变程序的外部行为。本文将详细探讨重构的目的、对象、时机和方法,帮助开发者理解和掌握重构的核心理念。 **重构的目的(Why...
首先,我们要理解泊松重建的基本原理。泊松重建是通过解决泊松方程来实现的,该方程是一个偏微分方程,可以将点云数据作为体密度函数的离散样本,然后找到一个连续的曲面,使得曲面上的法线方向与点云中的点法线一致...
分层重构是一种有效的策略,它将复杂的场景分解为若干层次,逐层进行重建。每一层通常代表场景的一个特定细节级别,从粗略的几何结构到精细的表面纹理。这种方法可以有效地管理和优化计算资源,同时提高重建的精度和...
本文将深入探讨基于MATLAB的CT图像重建代码及其在三维重构中的应用,这其中包括了有限元模拟和3D打印。 首先,CT(Computed Tomography)图像重建是医学成像的一种重要方法,它通过X射线断层扫描来获取物体内部的二...
在内参数已知的情况下,可以通过寻找一个满足欧氏重构条件的非奇异矩阵,将射影坐标转换为欧氏坐标,实现更精确的三维重建。实验验证了这种方法的有效性,证明了这种分步策略和新算法在处理射影到欧氏重构转换中的...
在MATLAB环境中,数字全息图的重构是光学领域中的一个重要课题,主要应用于模拟和分析光波场。这里,我们关注的是三种不同的重构方法:基于卷积(CONV)的重构、基于 Fresnel 变换的重构(Fresnel_diff)和角谱法...
在描述中提到的"对经验模态分解后的各分量IMF进行重构代码,函数可直接调用",意味着这个压缩包中包含了一个名为"EMDchonggou.m"的MATLAB脚本文件,该文件提供了实现IMF重构功能的代码。用户可以直接运行这个函数,...
在计算机视觉领域,三维重建是一项关键技术,它涉及从多个视角获取图像并恢复场景的三维几何信息。本资源“基于双目视觉的三维重建(matlab 语言实现)(推荐)”提供了一个用MATLAB实现的简单三维重建模型,对于初学者...
音频信号重建,描述音频重构经典算法,对于恢复信号特别有用
在描述中提到的“根据相位谱和幅度谱对图像进行单独重建”,是指分别用这两个谱来重构图像。这通常通过逆傅里叶变换`ifft2`来实现。单独使用幅度谱重建图像时,会丢失相位信息,可能导致图像失真,但能保留主要的...
为研究层析成像算法对温度场二维重建质量的影响,实现了两种典型重建算法:代数迭代重建算法(ART)和模拟退火(SA)算法。在不同的射线分布和吸收谱线数目情况下,使用两种算法对给定单峰温度场和双峰温度场分别...
实现CT扇形束重建,医学断层图像重建仿真实验书中部分代码
三维重构 可以检测有效的系统缺陷,进行缺陷的定位,缺陷体积的测量等,如何进行三维重构(3D reconstuction)的输入是各种三维以下的数据,比如纯二维的RGB图像(序列)、带有深度信息的RGBD数据等,出来的是三维...
FOCUSS算法由Gelb在2002年提出,主要用于图像重建和医学成像等领域。它基于迭代最小化策略,旨在找到一个稀疏解,使得观测数据与理论测量值之间的残差平方和最小。FOCUSS的关键在于其迭代过程,通过不断地更新未知...
5. **分析与可视化**:重建的相空间可以用于计算Lyapunov指数、分岔图、吸引子重构等,帮助识别系统的混沌、周期或稳定状态。同时,也可以通过绘制相空间轨迹图直观展示系统动态。 `method.txt`可能是关于如何执行...
在这个过程中,数据的方差最大化的方向被定义为主成分。通过保留最重要的几个主成分,我们可以在损失最少信息的情况下,大幅度减小数据的复杂性。 在图像处理中,PCA常用于图像压缩和降噪。特别是在人脸识别领域,...