`

何时应该决定重构

 
阅读更多

在以下情况下,你应该选择重构:

 

1. 重复。你发现了对DRY原则的违反。

2. 非正交的设计。你发现有些代码或设计可以变得更为正交。

3. 过时的知识。事情变了,需求转移了,所以你的代码也需要跟上这些变化。

4. 性能。为了改善性能,你需要重新组织某个功能。

 

 

 

那么,我们该如何进行重构呢?

 

1. 不要试图在重构的同时增加功能。

2. 在重构之前,确保你拥有良好的测试,并在重构的过程中通过经常运行测试,这样,可以尽快知道被破坏的地方。

3. 采取短小、深思熟虑的步骤,并在每个步骤之后进行测试。

 

 

                                                                           —— 总结自《程序员修炼之道》

分享到:
评论

相关推荐

    重构.pdf_电子版_pdf版

    为了改善这种情况,开发者决定采取重构措施。 重构的第一步是构建一个可靠的测试环境,这是安全重构的保障。测试环境可以确保每次代码修改之后,软件的行为和功能都能得到验证,从而保障重构的安全性。 重构的下...

    我经历的重构

    何时进行重构 - **即时重构**:遇到问题时即刻进行重构,避免问题积累。 - **交接重构**:员工离职时,与接手的人员一同进行重构,有助于知识转移和代码优化。 - **频繁小规模重构**:小规模的重构更容易实现,也...

    代码重构&模式

    **工厂方法模式**允许子类决定实例化哪一个类,提供了一种用继承来改变工厂方式的途径;**观察者模式**定义了对象间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。 **...

    POD.rar_POD 重构_POD正交分解_we75t_本征正交分解_流场重构

    在这个主题中,"POD.rar_POD 重构_POD正交分解_we75t_本征正交分解_流场重构" 提到了一种名为“主成分分析”(Principal Component Analysis,PCA)在流体力学中的应用,通常称为“正交分解”(Proper Orthogonal ...

    wavelet_小波分解与重构_

    小波分解的层数,也就是级数,决定了分析的精细程度。在本例中,选择了9层分解,意味着我们可以得到9个不同的解析系数级别,从粗略的全局信息到非常细致的局部特征。随着分解层数的增加,每一层的小波系数会提供更...

    MATLAB下人脸图像的PCA重构

    4. **选择主成分**:根据特征值大小,选择前k个具有最大特征值的特征向量,作为新的坐标轴,k决定了降维后的维度。 5. **数据投影**:将原始数据投影到这k个特征向量组成的正交基上,使用`*`运算符完成。 6. **...

    cao_m.rar_cao MATLAB_嵌入维_相空间 重构_相空间重构Cao

    1. **选择延时时间**:延时时间τ是决定相空间重构质量的关键因素,合适的τ可以使原始系统的信息得到充分保留。常用的选取方法有Mutual Information和False Nearest Neighbors等。 2. **构建嵌入向量**:基于延时...

    重构改善既有代码的设计(PDF)

    6. 用多态代替条件表达式(Replace Conditional with Polymorphism):当需要使用条件表达式(如if-else或switch)来决定具体的行为时,可以考虑使用多态来代替。这样做可以使行为更加灵活,易于扩展和维护。 7. ...

    可重构天线文章

    PRS的设计决定了天线的反射特性和辐射图案,而通过改变PRS的结构,可以实现不同的反射相位,从而达到波束扫描的目的。这种天线的设计原理涉及谐振效应,利用谐振腔在特定频率范围内放大电磁波,实现频率选择性。 在...

    重构:改善既有代码的设计(中英文)

    在软件开发的世界里,代码的质量决定了软件的寿命和可维护性。随着时间的推移和需求的演进,软件往往会出现难以理解和维护的状况,这时候就需要一种技术来改善这种状况,这就是重构。《重构:改善既有代码的设计》这...

    使用贪婪算法mp对图像进行重构

    - **阈值设定**:决定何时停止迭代,以平衡重构质量和计算复杂度。 - **重构**:将选出的基及其系数组合,重构图像。 通过MP算法,不仅可以实现图像的高效表示,还可以用于图像去噪、压缩编码、图像分类等任务。在...

    压缩感知重构算法

    4. **迭代与更新**:在每个迭代周期,算法会根据当前状态和温度决定是否接受新的解决方案,通过不断调整,逐渐逼近真实信号。 5. **终止条件**:当达到预设的迭代次数或者残差阈值时,算法停止,输出重构后的信号。...

    使用设计模式重构代码.pdf

    理解这些模式的动机——如提供灵活的行为选择(策略模式)或维持对象间的松耦合(观察者模式)——可以帮助我们决定何时何地应用它们。 总之,设计模式的真正价值在于它们背后的思想和解决问题的意图,而非仅仅作为...

    重构与模式

    - **工厂方法模式**:定义一个创建产品对象但不绑定具体类的接口,由子类决定实例化哪一个类。 - **抽象工厂模式**:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 2. **结构型模式**:...

    matlab 小波分解与重构

    2. **设置分解层数**:这决定了分析的细节级别,层数越多,分解得到的频率成分越精细。 3. **调用分解函数**:使用`wavedec`或`wavedec2`函数,输入原始信号或图像以及选择的小波基和分解层数。 4. **处理小波系数**...

    全局架构重构

    例如,在支付宝的案例中,通过设定不同权重的关键目标,最终得出总评分数来决定方案是否可行。 #### 五、如何控制架构重构风险? 1. **项目前期**:进行关键技术准备、架构概念验证等准备工作。 2. **项目中期**:...

    一种压缩感知的重构算法

    其中恢复重构算法直接关系到重构精度的大小,运算时间的长短,决定着CS理论是否切实可行。 压缩感知重构算法是CS理论的核心问题之一,旨在从有限的观测值中恢复原始信号。为提高压缩感知重构算法的精度,本文提出了...

    中南大学软件学院架构jpetstore重构

    在现代软件工程领域,架构设计是至关重要的一步,它决定了系统的可扩展性、可维护性和性能。中南大学软件学院的一个实践项目,就是对经典的JPetStore应用进行重构,采用Struts2框架以提升其架构效率和代码质量。本文...

    混沌序列的相空间重构的MATLABT程序

    2. **延迟时间(Embedding Delay)的选择**:延迟时间τ是相空间重构的关键参数,它决定了相邻数据点之间的距离。可以通过计算互信息或自相关函数来确定合适的τ值,以确保数据点间的独立性。 3. **嵌入维数...

Global site tag (gtag.js) - Google Analytics