`
ruilin215
  • 浏览: 1143175 次
  • 性别: Icon_minigender_2
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

别动不动拿"重构"说事

阅读更多

自从Martin Fowler先生将Refactoring这个概念带到了中国,许多程序员都如同获得了一个通行金牌似的,随时可能提起"Bad Smell"和"重构"。

从我的心里来讲,我并不反对重构。但我反对不考虑项目情况的盲目重构。

回想一下,当我们在考虑系统需要重构的时候,我们都考虑了那些因素?特别是大范围的系统级别的重构。由于小型重构涉及面较小,所以下面的很多原因都是针对大型重构进行论述的。

"Bad Smell"也许是我们第一个说出的原因。讲起这个,我仿佛就听到有无限个非常有道理的理由,能从重构者嘴里说出。其中最经常的理由就是:现在不重构,以后也得重构,显然现在重构的代价更小一点。

那么,我们就因此而准备进行重构了吗?

至少我看到很多项目最终都选择了重构。

选择重构的心理,应该和我们程序员的追求完美的个性非常相关。软件不断的进行重构,那么软件的质量就能越好。最关键的是,我们越来越将代码修改得让自己感觉没有遗憾。请允许我这样来分析重构者的心理,但是你不得不承认,往往决定一件事的时候,潜意识很容易战胜理智。

我的问题是,我们重构的时候,真正理性而全面的考虑过吗?

第一、重构的目标是什么?是系统的完美吗?是项目的顺利完成!我想提出一个大家不一定能够接受的标准,任何系统都是可以也是必然存在足够多的缺陷的。真正的成功,是指项目的成功,而并不是指创造一个完美的系统。重构的需要,是项目开发过程中,根据需要而采用的开发方式。只要保障足够程度的软件架构,重构是可以不进行的。

第二、重构的基础具备了吗?在很多成功的经验中,都明确地指出,重构需要有足够的单元测试支持。而且最好是自动化的。目前,很多项目并不具备这样的基础。对于单元测试的问题,我在最近的几篇关于单元测试的博文中也分析过现状和原因。总体说来,真正具备重构的基础的很少。

第三、重构对成本是否考虑周到。我们知道,重构必然会影响到现有项目的进度。这个进度的影响是否是可以接受的?你先不要忙着回答这个问题。能不能接受不是重构者说的,而是市场说的。这个时候,一个三方的沟通会议必不可少。

第四、重构的策略是否制定。重构这件事,并不是简简单单地就去将所有需要重构的地方进行重构。重构的范围越大,这个策略的需求就越高。过分乐观地估计重构的过程,往往是重构失败的重要原因之一。在对项目进行系统级别重构的时候,针对重构的范围规划,进度控制是非常必要的。这个不能要求重构者完全把控。本着适合的人做适合的事的原则,项目经理,应该充分考虑这方面的问题。

其实说到底,不要因为喜欢重构而重构,不要因为重构而重构。在重构之前以及重构的过程之中,我们都必须进行足够的保障,才能保障成功地完成。

分享到:
评论

相关推荐

    top.rar_动态 重构_动态可重构_动态重构

    这对于实时系统、高可用性应用以及持续更新的服务来说尤其重要,因为它可以在不影响用户体验的前提下优化软件。 在压缩包内的文件"top.v",根据文件扩展名,我们可以猜测这可能是一个Verilog代码文件,Verilog是一...

    ZYNQ 实现PL动态重构

    在ZYNQ平台上,这种技术尤为突出,因为它允许我们在不影响处理系统运行的情况下,对FPGA部分进行重新配置。 一、ZYNQ架构 ZYNQ系统级芯片的核心是其双核或四核ARM Cortex-A9处理器系统(PS),负责执行高级操作系统...

    动态重构流程

    总的来说,Xilinx ISE 12.4的动态重构流程涉及了从设计到实现的多个步骤,每个阶段都需要精心规划和执行,以实现高效且可靠的动态重构功能。在实际应用中,动态重构能显著提升系统的灵活性和效率,是FPGA设计中不可...

    FPGA动态可重构设计

    在当今高速发展的信息技术领域,FPGA(Field Programmable Gate Array,现场可编程门阵列)作为硬件设计的重要组成部分,因其灵活的可编程性和高效的处理能力,成为了嵌入式系统设计中不可或缺的技术之一。...

    基于模块化设计方法实现FPGA动态部分重构

    通过一个实例介绍了采用模块化设计方法实现Virtex-E FPGA动态部分重构的过程,能使重构模块在系统运行时改变其逻辑功能,而固定模块逻辑功能不中断,同时器件的重构时间大大减少。  随着可编程技术的不断发展,...

    基于FPGA的动态可重构系统设计与实现

    利用可重构技术,可以在不显著增加硬件资源的情况下,使系统同时具备软件实现的灵活性和硬件实现的高性能。 ##### 2.2 可重构方式的分类 根据重构发生的方式,可重构技术可以分为两大类: - **静态系统重构**:在...

    动态可重构系统的通信结构研究

    动态可重构系统通常使用基于静态随机存取存储器(SRAM)的现场可编程门阵列(FPGA)作为实现平台,因为这种FPGA能够在不停止运行的情况下更改其硬件配置。 动态可重构系统可以分为静态重构和动态重构两种类型。静态...

    基于FPGA的动态可重构系统实现研究.pdf

    局部动态重构意味着只有部分电路进行重构,而不影响其他部分,这极大地提高了硬件资源的使用效率。然而,局部重构也有可能增加硬件电路规模和功耗,因此需要仔细设计和平衡。 基于FPGA的动态可重构技术的特征和原理...

    考虑多目标函数的配电网动态重构

    动态重构不仅仅关注单一指标,而是寻求在多个目标之间找到平衡点,以提高整体系统的性能。 首先,我们需要理解配电网的基本概念。配电网是电力系统的一部分,负责将电力从变电站输送到终端用户。它包括馈线、变压器...

    FPGA动态部分可重构技术概述.pdf

    包括选择何种逻辑资源进行重构、如何在不干扰其他逻辑正常工作的情况下加载新的配置、确保重构过程的可靠性和重构后逻辑的稳定性等问题。 在国内外,FPGA动态部分可重构技术的发展日新月异,已经广泛应用于数据通信...

    考虑分布式电源和电动汽车不确定性的双层动态配网重构.pdf

    本文针对主动配电网运行优化,提出了基于双层优化模型的配网动态重构方法,并考虑了DG、EV和其他负荷的不确定性。文章在《电力系统保护与控制》第48卷第10期上发表,其主要内容可以提炼出以下几个知识点: 1. ...

    基于动态模式的CAD_CAE模型重构软件设计及实现.pdf

    综上所述,基于动态模式的CAD/CAE模型重构软件不仅能够有效解决CAD到CAE转换的困难,提升工程师的工作效率,而且通过其通用性和扩展性,能够成为多学科领域中不可或缺的工具,推动计算机辅助设计和工程分析在工业中...

    基于FPGA和DSP的星载软件动态重构设计.pdf

    版本回退功能是动态重构设计中不可或缺的一环,它确保在动态重构过程中软件系统出现异常时,能够快速恢复到一个已知的稳定状态。通过构建双存储电路和实施版本管理策略,可以在必要时迅速切换到之前的稳定版本,减少...

    重构--Ruby 完整扫描清晰版--中文

    对于Ruby这样的动态语言来说,重构尤其重要,因为它提供了灵活性,但同时也可能由于过度的动态性和自由度导致代码难以理解和维护。 文档的描述部分提到该书由Martin Fowler参与编写。Martin Fowler是软件开发领域极...

    动态可重构基本理论.pdf

    Xilinx的Virtex系列支持动态部分可重构,允许在不影响其他电路运行的情况下,只对部分区域进行重构,这有助于降低能耗、提高板级利用率和加快配置速度。\n\n动态部分可重构有两种主要模式:一种是SelectMap模式,另...

    cLayout一键生成重构稿

    在IT行业中,前端开发是一项至关重要的任务,而“cLayout一键生成重构稿”是一个非常实用的工具,尤其对于UI设计师和前端开发者来说。这个工具基于JavaScript技术,专注于提高工作效率,通过Canvas技术自动识别并...

    基于FPGA的动态可重构边缘检测系统设计.pdf

    动态可重构技术使得FPGA可以在不中断当前运行逻辑的情况下,改变特定区域的逻辑功能,这样可以提高芯片逻辑资源的有效利用率,实现资源的按需分配。通过动态分时复用高通滤波和Sobel算法,能够在同一片FPGA上实现...

    运动界面的追踪和重构方法.pdf

    文中提到的MAC(Marker and Cell)方法就是一种采用标记点追踪和重构不可压缩流体自由面的技术。而后续提及的各种改进方法,比如ENO或WeightedENO方法、间断Galerkin方法、FLAIR_VOF和CICSAM方法,都是为了提高界面...

Global site tag (gtag.js) - Google Analytics