`
tomcat_oracle
  • 浏览: 316836 次
社区版块
存档分类
最新评论

谈一谈如何避免重构带来的危险

阅读更多

重构代码很危险,它会给测试工作增加巨大的负担。除非你的程序需要重构,一定不要轻易重构代码。我这里所说的并不是把一个for循环改成while 循环,或把一个StringBuffer改成StringBuilder,我说的是大动作,例如重写一个方法,一个函数,甚至整个类或包。如果你缺乏对一个方法或一个类的了解,那你重构它的条件就不充分。即使你有一个天才的计划,你也需要和团队一起设计其中重大的修改。

  当属于下列情况时,你不该重构

  对于你来说,它的逻辑看起来过于复杂,你没有花时间去分析它。

  你不理解为什么前任程序员要这样编写。

  你着手的是一个很重要的系统,而且时间很紧。

  你是团队里的新成员,或新接触这个项目,或这种语言。

  当属于下列情况时,你可以重构

  现有的代码对它要实现的功能显得过于复杂,并且你分析过它。

  修改后的代码远比现存的代码逻辑要清晰。

  你有足够的时间,人手,财力来支持对项目进行回归测试。

  现有的代码陈旧无效率。

  无人认领的,写的很烂的代码都属于此类。

  跟你的一位同事谈论对这部分程序进行重构的好处和存在的风险,你们两个都赞成重构。

  如何降低重构的风险

  权衡一下对一段代码进行重构的利与弊,找出降低风险的方法。调试一段你经过重构但却使产品崩溃的代码,这对你来说将会是在这个行业中最有压力的事情。

  使用自动化的回归测试,快速的验证你的修改。这非常重要,如果没有准备自动化测试,你应该在做任何修改前建好它。

  尽量让你的重构处于很短的开发周期,产品更新发布周期也尽可能短。

  把你重构的代码和其它程序隔离开,这样能让你更容易找到出问题的地方。

  为你的重构活动准备测试计划,包括回归测试,功能测试,反向测试,负载测试,性能测试和用户确认测试。

  投入全部精力来研究其中的逻辑,不要分心做其它事情。

  在需要的地方使用设计模式。不要为了设计模式而增加设计模式。设计模式应该用在合适的时间和合适地方。

  小粒度重构

  当你在开封一个方法时,如果你发现其中有一部分可以改进,那你就该考虑它,改进它。整洁的代码是我们需要的,因为写的很烂的代码我们到处可见。和你的同事讨论它们,当有人要修改你的代码时不要固守己见。重构,然后回归测试,然后才提交代码。没有人希望自己提交的代码会弄垮系统。

  下面是一些比较有深度的阅读材料。

  重构:改善既有代码的设计

  代码整洁之道

  Working Effectively with Legacy Code

  程序员的职业素养

  忍住你的欲望,不要试图重构你不理解的代码。多问问题,努力能清楚他们为什么要把程序写成这样。也许他们有很好的理由。如果你找到一段很古老的代码,很有可能它们是按照古老的方式写的。每天都在新增的API,模式,需求和新领会都会让这些老的方式显得陈旧。不断努力学习新的技术,但不要为了要使用这些技术而过于热心的在重构中使用它们

4
0
分享到:
评论
1 楼 桃花源记 2013-10-21  
"你不理解为什么前任程序员要这样编写。" 说的是啊,我就上了很多次当!

相关推荐

    重构代码很危险:如何避免重构带来的危险

    重构代码很危险:如何避免重构带来的危险?重构代码很危险,它会给测试工作增加巨大的负担。除非你的程序需要重构,一定不要轻易重构代码。我这里所说的并不是把一个for循环改成while循环,  重构代码很危险,它会给...

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

    3. **避免过度设计**:通过重构,我们可以根据实际遇到的问题来优化代码,避免在项目初期投入过多时间和资源进行过度设计。 4. **个人技能提升**:重构过程是将理论知识(如设计模式、原则、规范)应用到实践的过程...

    软件重构讲义,自己整理的一个软件重构ppt

    《软件重构讲义》是关于软件开发中重构技术的一份资料,主要涵盖了重构的基本概念、目的、时机选择、流程以及代码质量改进等方面。重构是一种在不改变软件功能的前提下,通过改进代码结构以提升软件设计质量、可维护...

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

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

    重构_重构_改善既有代码_

    《重构:改善既有代码设计》是一本由Martin Fowler所著的经典IT著作,它详细阐述了在软件开发过程中如何通过重构来提升代码质量、可读性和维护性。重构是一种系统性的方法,旨在不改变软件外在行为的前提下,改进其...

    软件重构技术(重构介绍、重构原则、代码的坏味道。。。)

    再者,我们谈一谈“代码的坏味道”,这是识别需要重构的线索。常见的代码坏味道包括: 1. **长方法**:如果一个方法执行多个职责,应考虑拆分为多个小方法,每个方法只做一件事。 2. **重复代码**:重复的代码不仅...

    代码重构.pdf

    对于希望提升自身代码质量、改善设计思路的软件开发者而言,阅读《代码重构》无疑能够带来深刻的启发和实践上的指导。 以上内容概述了《代码重构》书籍的一些核心知识点,涉及重构的动机、步骤、工具、风险以及与...

    .java代码重构

    - **小步重构**:每次只做一小部分改动,避免大刀阔斧的修改导致的错误。 - **运行测试**:每次重构后都要运行测试,确保代码行为未变。 - **持续优化**:不断审视和改进重构后的代码,追求简洁和高效。 3. **...

    网站重构,公用模板重构

    首先,重构是软件开发中的一个过程,它不改变软件的功能,而是通过改进代码结构和设计来提高其可读性、可扩展性和性能。在Web开发领域,重构通常涉及HTML、CSS和JavaScript的优化,以符合WEB标准和WEB2.0的原则。 ...

    【分享】部门内部《重构》培训

    8. **风险与注意事项**:提醒重构可能带来的风险,如引入新的错误,以及如何避免这些风险,比如始终保持测试覆盖率。 9. **总结与讨论**:对整个重构主题进行总结,可能还包括一些开放性问题,鼓励团队成员分享自己...

    我经历的重构

    - **实施结果**:重构过程耗时长且成本高昂,最终发现Zope3并不像预期那样完美,反而带来了更多的问题。 - **反思总结**:从这次经历中学到了宝贵的经验教训,例如不应盲目追随新技术潮流,而应根据实际情况做出决策...

    重构 中英双版

    2. **重构原则**:介绍了重构的基本原则,如小步前进、保持代码可测试、避免大规模更改等,这些原则旨在降低风险并确保重构过程的可控性。 3. **重构模式**:书中列举了大量具体的重构模式,每个模式都有一个清晰的...

    重构(Refactoring)英文版

    总之,《重构:改善现有代码的设计》这本书不仅是一本关于重构的技术指南,也是一本深入探讨软件设计哲学的重要著作。通过学习本书中的知识,开发者可以更好地理解和掌握重构的艺术,从而提高软件的质量和可维护性。

    重构模式.rar

    《重构模式》是一本深入探讨软件重构技术的专业书籍,尤其针对C++、C#和Java等面向对象编程语言。重构是提升代码质量、可读性和维护性的重要手段,它涉及在不改变软件外部行为的前提下,改善其内部结构。这本书详细...

    重构改善既有代码的设计PPT课件

    重构能够带来多方面的好处。它可以帮助程序员重新组织代码,使其更好地反映出程序的设计和结构,从而提高代码的可读性。可读性强的代码便于理解和维护,也有利于快速添加新功能。此外,重构也是发现和修复错误的有效...

    重构思路浅谈(最后一根稻草型时机)

    《重构思路浅谈:最后一根稻草型时机》 重构,是软件开发过程中不可或缺的一环,旨在提升代码质量,改善系统架构,确保系统的可持续性和稳定性。本文将探讨一种特殊的重构时机——“最后一根稻草”型时机,以及重构...

    一本代码重构的书让代码更简洁

    《重构:改善既有代码的设计》是一本由Martin Fowler所著的经典书籍,专注于讲解如何通过重构技术来提升代码质量,使其更具可读性、可维护性和扩展性。在Java编程领域,重构是提升软件开发效率和降低维护成本的重要...

    计算机技术变革带来产业生态重构报告(52页).zip

    计算机技术变革带来产业生态重构报告(52页),资源名称:计算机技术变革带来产业生态重构报告(52页)计算机技术变革带来产业生态重构.pdf.zip...

    重构:改善既有代码的设计.pdf 带目录清晰版

    - **增强可维护性**:重构能够使代码结构更加清晰,便于理解和修改,减少因代码难以理解而带来的维护成本。 - **促进团队协作**:高质量的代码更容易被其他开发者理解,有助于提升团队之间的协作效率。 - **支持敏捷...

Global site tag (gtag.js) - Google Analytics