`
yzd
  • 浏览: 1816699 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

别动不动拿"重构"说事

 
阅读更多
<p style="text-indent: 21pt;">自从Martin Fowler先生将Refactoring这个概念带到了中国,许多程序员都如同获得了一个通行金牌似的,随时可能提起"Bad Smell"和"重构"。</p>
<p style="text-indent: 21pt;">从我的心里来讲,我并不反对重构。但我反对不考虑项目情况的盲目重构。</p>
<p style="text-indent: 21pt;">回想一下,当我们在考虑系统需要重构的时候,我们都考虑了那些因素?特别是大范围的系统级别的重构。由于小型重构涉及面较小,所以下面的很多原因都是针对大型重构进行论述的。</p>
<p style="text-indent: 21pt;">"Bad Smell"也许是我们第一个说出的原因。讲起这个,我仿佛就听到有无限个非常有道理的理由,能从重构者嘴里说出。其中最经常的理由就是:现在不重构,以后也得重构,显然现在重构的代价更小一点。</p>
<p style="text-indent: 21pt;">那么,我们就因此而准备进行重构了吗?</p>
<p style="text-indent: 21pt;">至少我看到很多项目最终都选择了重构。</p>
<p style="text-indent: 21pt;">选择重构的心理,应该和我们程序员的追求完美的个性非常相关。软件不断的进行重构,那么软件的质量就能越好。最关键的是,我们越来越将代码修改得让自己感觉没有遗憾。请允许我这样来分析重构者的心理,但是你不得不承认,往往决定一件事的时候,潜意识很容易战胜理智。</p>
<p style="text-indent: 21pt;">我的问题是,我们重构的时候,真正理性而全面的考虑过吗?</p>
<p style="text-indent: 21pt;">第一、重构的目标是什么?是系统的完美吗?是项目的顺利完成!我想提出一个大家不一定能够接受的标准,任何系统都是可以也是必然存在足够多的缺陷的。真正的成功,是指项目的成功,而并不是指创造一个完美的系统。重构的需要,是项目开发过程中,根据需要而采用的开发方式。只要保障足够程度的软件架构,重构是可以不进行的。</p>
<p style="text-indent: 21pt;">第二、重构的基础具备了吗?在很多成功的经验中,都明确地指出,重构需要有足够的单元测试支持。而且最好是自动化的。目前,很多项目并不具备这样的基础。对于单元测试的问题,我在最近的几篇关于单元测试的博文中也分析过现状和原因。总体说来,真正具备重构的基础的很少。</p>
<p style="text-indent: 21pt;">第三、重构对成本是否考虑周到。我们知道,重构必然会影响到现有项目的进度。这个进度的影响是否是可以接受的?你先不要忙着回答这个问题。能不能接受不是重构者说的,而是市场说的。这个时候,一个三方的沟通会议必不可少。</p>
<p style="text-indent: 21pt;">第四、重构的策略是否制定。重构这件事,并不是简简单单地就去将所有需要重构的地方进行重构。重构的范围越大,这个策略的需求就越高。过分乐观地估计重构的过程,往往是重构失败的重要原因之一。在对项目进行系统级别重构的时候,针对重构的范围规划,进度控制是非常必要的。这个不能要求重构者完全把控。本着适合的人做适合的事的原则,项目经理,应该充分考虑这方面的问题。</p>
<p style="text-indent: 21pt;">其实说到底,不要因为喜欢重构而重构,不要因为重构而重构。在重构之前以及重构的过程之中,我们都必须进行足够的保障,才能保障成功地完成。</p>
分享到:
评论

相关推荐

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

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

    基于Xilinx FPGA的部分动态可重构技术的信号解调系统

    随着现代通信技术的迅速发展,信号的调制方式向多样化发展,解渊技术也随之不断向前发展。为了对高速大带宽的信号进行实时解调,...为了有效斛决这个问题,笔者通过基下FPGA部分动态町重构技术,提出了相应的解决方案。

    新型模块化可重构机器人系统

    改变各模块之间的联接状态和相互位置关系, 不需任何外界辅助, 自动完成重构过程和整体协调运动设计了模 块的分离联接机构和单自由度立方体结构, 模块结构兼具阵列式和串联式特点, 可方便的实现重构运动和整体协 调...

    论文研究 - 基于调制滤波器组的非最大抽取动态可重构信道化结构

    为了解决统一信道化接收机不能接收跨信道和宽带信号的问题,提出了一种动态可重构信道化滤波器组的结构。 动态可重构通道化滤波器组分为两部分:分析滤波器组和合成滤波器组。 分析滤波器组的功能是根据信道划分将...

    考虑分布式电源不确定性的配电网鲁棒动态重构matlab代码

    间歇性分布式电源并网使得配电网网络重构过程需要考虑更多的不确定因素。在利用仿射数对分布式电源出力的不确定性进行合理分析与建模基础上,建立以重构周期内开关动作耗费与网络有功损耗等综合成本最低为目标函数,...

    论文研究-小型无人机舵面故障的控制重构设计.pdf

    小型无人机一般采用单余度设计,舵面故障后重构控制只能根据系统解析冗余进行设计,传统辨识方法复杂而且往往不能满足无人机重构控制的实时性。对由于舵面故障多样性引起的无人机参数大范围跳变进行分析,采用基于...

    论文研究-基于数据动态冗余的分布式并行系统重构机制.pdf

    设计高可用分布式并行数据库系统,系统重构不能只局限于单节点状态变化,为此提出了基于数据动态冗余的分布式并行系统重构机制。该机制通过相关事件触发系统检测,及时分布采集节点状态信息,借助数据的再生和转移,...

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

    #资源达人分享计划#

    重构-改善既有代码设计

    指对软件代码做任何更动以增加可读性或者简化结构而不影响输出结果。 软件重构需要借助工具完成,重构工具能够修改代码同时修改所有引用该代码的地方。 在极限编程的方法学中,重构需要单元测试来支持

    论文研究-在云间可重构的分布式存储.pdf

    提出了基于主备的分布式共享内存算法,该算法实现了在不影响读写操作的情况下, 可动态重构数据副本,从而提高了系统的可用性及可靠性, 并保证了副本之间的一致性. 首先设置辅助master, 辅助master 存储副本的配置及...

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

    代码重构(英语:Code refactoring)指对软件代码做任何更动以增加可读性或者简化结构而不影响输出结果。 软件重构需要借助工具完成,重构工具能够修改代码同时修改所有引用该代码的地方。在极限编程的方法学中,...

    (文章复现)考虑网络动态重构的分布式电源选址定容优化方法matlab代码

    采用添加辅助电压约束的方法,解决了对含电压上限约束时二阶锥模型松弛不紧致的问题。在IEEE标准算例中测试了算法的有效性,结果表明,考虑网络动态重构可以提高电网对分布式电源的消纳能力,同时提升分布式电源投资...

    论文研究-一种应用于SpaceWire路由器动态部分重构的容错技术.pdf

    在SpaceWire总线标准网络层分析的基础上, 对cell矩阵无阻塞路由增添HanMing编码实现纠一检二, 当检测出大于一个错误不能纠正时, 采用局部重构的方式对有误的单个cell单元进行三重冗余重构, 同时采用Partition Pin来...

    论文研究 - 基于集成滤波器组的动态可重构结构设计

    为了提取接收信号的参数,以方便后续的研究和分析,详细推导了集成滤波器组的结构,并给出了在信号重构准确的条件下可重构滤波器组的结构设计方法。 。 在对滤波器组结构的设计和计算复杂度进行分析的基础上,动态...

    可重构技术分析及动态可重构系统设计

    由于数字逻辑系统功能复杂化的需求,单片系统的芯片正朝着超大规模、高密度的方向发展。对于一个大规模的数字系统而言,系统规模是基于各种逻辑功能...可重构计算技术能够提供硬件的效率和软件的可编程性,它综合了微处

    具有新型受限动态可重构加速器的高性能节能微处理器

    因此,与传统的动态可重构加速器相比,DYNaSTA加速器在提高能源效率的同时具有更大的灵活性。 我们模拟了所提出的DYNaSTA加速器的功耗,并测量了所制造的芯片。 结果,与普通的RISC微处理器相比,功耗降低了69%至...

    嵌入式系统/ARM技术中的FPGA动态局部可重构中基于TBUF总线宏设计

     FPGA动态局部可重构技术是指允许可重构的器件或系统的一部分进行重新配置,配置过程中其余部分的工作不受影响。动态局部可重构缩短了重构的时间,减少了系统重构的开销,提高了系统的运行效率。局部动态可重构技术...

    不确定动态系统的执行器故障检测与重构

    讨论不确定动态系统的执行器故障检测与重构问题.以滑模观测器为基础,利用状态和输出变换方法与奇异值分解方法相结合对系统进行降阶,提出一种鲁棒故障重构观测器.给出了优化滑模策略,并作了严格论证,保证对系统不确定...

    PHP代码重构方法漫谈

    然而,通常遗留代码库是不适合进行这种测试的。本文将介绍对包含常见问题的 PHP 代码的重构策略,以便简化使用流行的单元测试工具进行测试的过程,同时减少改进代码库的依赖性。 简介 回顾 PHP 的发展历程,我们发现...

Global site tag (gtag.js) - Google Analytics