`
json20080301
  • 浏览: 165710 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

为什么要重构

 
阅读更多

http://www.cnblogs.com/lane_cn/archive/2006/02/05/325782.aspx

什么是重构

重构,用最简单的一句话说:就是要在不改变系统功能的情况下,对系统的内部结构进行重新调整。重构的最直接目的在于改进软件系统的内部架构。一个好的结构可以更加适应于需求的变化,更好的满足客户的需求,最大限度的延长软件系统的生命周期。

为什么要重构

在不改变系统功能的情况下,改变系统的实现方式。为什么要这么做?投入精力不用来满足客户关心的需求,而是仅仅改变了软件的实现方式,这是否是在浪费客户的投资呢?

重构的重要性要从软件的生命周期说起。软件不同与普通的产品,他是一种智力产品,没有具体的物理形态。一个软件不可能发生物理损耗,界面上的按钮永远不会因为按动次数太多而发生接触不良。那么为什么一个软件制造出来以后,却不能永远使用下去呢?

对软件的生命造成威胁的因素只有一个:需求的变更。一个软件总是为解决某种特定的需求而产生,时代在发展,客户的业务也在发生变化。有的需求相对稳定一些,有的需求变化的比较剧烈,还有的需求已经消失了,或者转化成了别的需求。在这种情况下,软件必须相应的改变。

考虑到成本和时间等因素,当然不是所有的需求变化都要在软件系统中实现。但是总的说来,软件要适应需求的变化,以保持自己的生命力。

这就产生了一种糟糕的现象:
软件产品最初制造出来,是经过精心的设计,具有良好架构的。但是随着时间的发展、需求的变化,必须不断的修改原有的功能、追加新的功能,还免不了有一些缺陷需要修改。为了实现变更,不可避免的要违反最初的设计构架。经过一段时间以后,软件的架构就千疮百孔了。bug越来越多,越来越难维护,新的需求越来越难实现,软件的构架对新的需求渐渐的失去支持能力,而是成为一种制约。最后新需求的开发成本会超过开发一个新的软件的成本,这就是这个软件系统的生命走到尽头的时候。

重构就能够最大限度的避免这样一种现象。系统发展到一定阶段后,使用重构的方式,不改变系统的外部功能,只对内部的结构进行重新的整理。通过重构,不断的调整系统的结构,使系统对于需求的变更始终具有较强的适应能力。

分享到:
评论

相关推荐

    何谓重构,为什么要重构?

    - **提升设计质量**:重构不仅可以改进现有的设计,还能为应对新需求提供更加灵活的基础。 - **减少错误**:借助自动化测试工具可以在重构过程中及时发现引入的新错误,减少后期修复成本。 ### 重构的工具 为了...

    软件架构设计-基于重构

    1. **重构基础**:介绍重构的基本概念,包括为什么要重构,重构的目标,以及重构与调试、增量开发的区别。 2. **重构技巧**:详细阐述各种重构手法,如提取函数、移动函数、提取类等,以及何时、如何使用它们。 3....

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

    重构是软件开发过程中的一个重要环节,它涉及到代码的优化、设计改进和质量提升,而不改变程序的外部行为。本文将详细探讨重构的目的、对象、时机和方法,帮助开发者理解和掌握重构的核心理念。 **重构的目的(Why...

    泊松重建_泊松重建_形貌_pcl泊松重构_

    首先,我们要理解泊松重建的基本原理。泊松重建是通过解决泊松方程来实现的,该方程是一个偏微分方程,可以将点云数据作为体密度函数的离散样本,然后找到一个连续的曲面,使得曲面上的法线方向与点云中的点法线一致...

    三维重建中的分层重构

    分层重构是一种有效的策略,它将复杂的场景分解为若干层次,逐层进行重建。每一层通常代表场景的一个特定细节级别,从粗略的几何结构到精细的表面纹理。这种方法可以有效地管理和优化计算资源,同时提高重建的精度和...

    CT图像重建代码 三维重构

    本文将深入探讨基于MATLAB的CT图像重建代码及其在三维重构中的应用,这其中包括了有限元模拟和3D打印。 首先,CT(Computed Tomography)图像重建是医学成像的一种重要方法,它通过X射线断层扫描来获取物体内部的二...

    第四章 从射影重构恢复欧氏重构

    在内参数已知的情况下,可以通过寻找一个满足欧氏重构条件的非奇异矩阵,将射影坐标转换为欧氏坐标,实现更精确的三维重建。实验验证了这种方法的有效性,证明了这种分步策略和新算法在处理射影到欧氏重构转换中的...

    matlab代码的数字全息三种重构,CONV,fresnel

    在MATLAB环境中,数字全息图的重构是光学领域中的一个重要课题,主要应用于模拟和分析光波场。这里,我们关注的是三种不同的重构方法:基于卷积(CONV)的重构、基于 Fresnel 变换的重构(Fresnel_diff)和角谱法...

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

    在描述中提到的"对经验模态分解后的各分量IMF进行重构代码,函数可直接调用",意味着这个压缩包中包含了一个名为"EMDchonggou.m"的MATLAB脚本文件,该文件提供了实现IMF重构功能的代码。用户可以直接运行这个函数,...

    基于双目视觉的三维重建(matlab 语言实现)(推荐)_基于双目的三维模型重建_三维重建matlab_双目重建_

    在计算机视觉领域,三维重建是一项关键技术,它涉及从多个视角获取图像并恢复场景的三维几何信息。本资源“基于双目视觉的三维重建(matlab 语言实现)(推荐)”提供了一个用MATLAB实现的简单三维重建模型,对于初学者...

    音频信号重建

    音频信号重建,描述音频重构经典算法,对于恢复信号特别有用

    MATLAB根据相位谱和幅度谱重建图像

    在描述中提到的“根据相位谱和幅度谱对图像进行单独重建”,是指分别用这两个谱来重构图像。这通常通过逆傅里叶变换`ifft2`来实现。单独使用幅度谱重建图像时,会丢失相位信息,可能导致图像失真,但能保留主要的...

    基于TDLAS的二维温度场重建算法

    为研究层析成像算法对温度场二维重建质量的影响,实现了两种典型重建算法:代数迭代重建算法(ART)和模拟退火(SA)算法。在不同的射线分布和吸收谱线数目情况下,使用两种算法对给定单峰温度场和双峰温度场分别...

    扇形束重建算法.zip_CT 断层_CT 图像重建_CT图像重建_fanbeam _图像重建算法

    实现CT扇形束重建,医学断层图像重建仿真实验书中部分代码

    三维重构 、基于切片的三维重构 、三维重构的缺陷检测 ,matlab GUI界面的形式

    三维重构 可以检测有效的系统缺陷,进行缺陷的定位,缺陷体积的测量等,如何进行三维重构(3D reconstuction)的输入是各种三维以下的数据,比如纯二维的RGB图像(序列)、带有深度信息的RGBD数据等,出来的是三维...

    重构.pdf_电子版_pdf版

    为什么需要重构? 在软件开发过程中,我们经常会发现代码变得越来越复杂、难以维护和扩展。这是因为随着软件的演进,代码的结构和设计可能会变得不够灵活和scalable。此时,重构就变得非常必要了。通过重构,我们...

    pca.rar_PCA重建_pca_pca 图像重建_pca人脸重建_人脸重建

    在这个过程中,数据的方差最大化的方向被定义为主成分。通过保留最重要的几个主成分,我们可以在损失最少信息的情况下,大幅度减小数据的复杂性。 在图像处理中,PCA常用于图像压缩和降噪。特别是在人脸识别领域,...

    相空间重构,相空间重构理论,matlab

    5. **分析与可视化**:重建的相空间可以用于计算Lyapunov指数、分岔图、吸引子重构等,帮助识别系统的混沌、周期或稳定状态。同时,也可以通过绘制相空间轨迹图直观展示系统动态。 `method.txt`可能是关于如何执行...

Global site tag (gtag.js) - Google Analytics