重构代码很危险,它会给测试工作增加巨大的负担。除非你的程序需要重构,一定不要轻易重构代码。我这里所说的并不是把一个for循环改成while 循环,或把一个StringBuffer改成StringBuilder,我说的是大动作,例如重写一个方法,一个函数,甚至整个类或包。如果你缺乏对一个方法或一个类的了解,那你重构它的条件就不充分。即使你有一个天才的计划,你也需要和团队一起设计其中重大的修改。
当属于下列情况时,你不该重构
对于你来说,它的逻辑看起来过于复杂,你没有花时间去分析它。
你不理解为什么前任程序员要这样编写。
你着手的是一个很重要的系统,而且时间很紧。
你是团队里的新成员,或新接触这个项目,或这种语言。
当属于下列情况时,你可以重构
现有的代码对它要实现的功能显得过于复杂,并且你分析过它。
修改后的代码远比现存的代码逻辑要清晰。
你有足够的时间,人手,财力来支持对项目进行回归测试。
现有的代码陈旧无效率。
无人认领的,写的很烂的代码都属于此类。
跟你的一位同事谈论对这部分程序进行重构的好处和存在的风险,你们两个都赞成重构。
如何降低重构的风险
权衡一下对一段代码进行重构的利与弊,找出降低风险的方法。调试一段你经过重构但却使产品崩溃的代码,这对你来说将会是在这个行业中最有压力的事情。
使用自动化的回归测试,快速的验证你的修改。这非常重要,如果没有准备自动化测试,你应该在做任何修改前建好它。
尽量让你的重构处于很短的开发周期,产品更新发布周期也尽可能短。
把你重构的代码和其它程序隔离开,这样能让你更容易找到出问题的地方。
为你的重构活动准备测试计划,包括回归测试,功能测试,反向测试,负载测试,性能测试和用户确认测试。
投入全部精力来研究其中的逻辑,不要分心做其它事情。
在需要的地方使用设计模式。不要为了设计模式而增加设计模式。设计模式应该用在合适的时间和合适地方。
小粒度重构
当你在开封一个方法时,如果你发现其中有一部分可以改进,那你就该考虑它,改进它。整洁的代码是我们需要的,因为写的很烂的代码我们到处可见。和你的同事讨论它们,当有人要修改你的代码时不要固守己见。重构,然后回归测试,然后才提交代码。没有人希望自己提交的代码会弄垮系统。
下面是一些比较有深度的阅读材料。
重构:改善既有代码的设计
代码整洁之道
Working Effectively with Legacy Code
程序员的职业素养
忍住你的欲望,不要试图重构你不理解的代码。多问问题,努力能清楚他们为什么要把程序写成这样。也许他们有很好的理由。如果你找到一段很古老的代码,很有可能它们是按照古老的方式写的。每天都在新增的API,模式,需求和新领会都会让这些老的方式显得陈旧。不断努力学习新的技术,但不要为了要使用这些技术而过于热心的在重构中使用它们
相关推荐
重构代码很危险:如何避免重构带来的危险?重构代码很危险,它会给测试工作增加巨大的负担。除非你的程序需要重构,一定不要轻易重构代码。我这里所说的并不是把一个for循环改成while循环, 重构代码很危险,它会给...
3. **避免过度设计**:通过重构,我们可以根据实际遇到的问题来优化代码,避免在项目初期投入过多时间和资源进行过度设计。 4. **个人技能提升**:重构过程是将理论知识(如设计模式、原则、规范)应用到实践的过程...
《软件重构讲义》是关于软件开发中重构技术的一份资料,主要涵盖了重构的基本概念、目的、时机选择、流程以及代码质量改进等方面。重构是一种在不改变软件功能的前提下,通过改进代码结构以提升软件设计质量、可维护...
在描述中提到的"对经验模态分解后的各分量IMF进行重构代码,函数可直接调用",意味着这个压缩包中包含了一个名为"EMDchonggou.m"的MATLAB脚本文件,该文件提供了实现IMF重构功能的代码。用户可以直接运行这个函数,...
《重构:改善既有代码设计》是一本由Martin Fowler所著的经典IT著作,它详细阐述了在软件开发过程中如何通过重构来提升代码质量、可读性和维护性。重构是一种系统性的方法,旨在不改变软件外在行为的前提下,改进其...
再者,我们谈一谈“代码的坏味道”,这是识别需要重构的线索。常见的代码坏味道包括: 1. **长方法**:如果一个方法执行多个职责,应考虑拆分为多个小方法,每个方法只做一件事。 2. **重复代码**:重复的代码不仅...
对于希望提升自身代码质量、改善设计思路的软件开发者而言,阅读《代码重构》无疑能够带来深刻的启发和实践上的指导。 以上内容概述了《代码重构》书籍的一些核心知识点,涉及重构的动机、步骤、工具、风险以及与...
- **小步重构**:每次只做一小部分改动,避免大刀阔斧的修改导致的错误。 - **运行测试**:每次重构后都要运行测试,确保代码行为未变。 - **持续优化**:不断审视和改进重构后的代码,追求简洁和高效。 3. **...
首先,重构是软件开发中的一个过程,它不改变软件的功能,而是通过改进代码结构和设计来提高其可读性、可扩展性和性能。在Web开发领域,重构通常涉及HTML、CSS和JavaScript的优化,以符合WEB标准和WEB2.0的原则。 ...
8. **风险与注意事项**:提醒重构可能带来的风险,如引入新的错误,以及如何避免这些风险,比如始终保持测试覆盖率。 9. **总结与讨论**:对整个重构主题进行总结,可能还包括一些开放性问题,鼓励团队成员分享自己...
- **实施结果**:重构过程耗时长且成本高昂,最终发现Zope3并不像预期那样完美,反而带来了更多的问题。 - **反思总结**:从这次经历中学到了宝贵的经验教训,例如不应盲目追随新技术潮流,而应根据实际情况做出决策...
2. **重构原则**:介绍了重构的基本原则,如小步前进、保持代码可测试、避免大规模更改等,这些原则旨在降低风险并确保重构过程的可控性。 3. **重构模式**:书中列举了大量具体的重构模式,每个模式都有一个清晰的...
总之,《重构:改善现有代码的设计》这本书不仅是一本关于重构的技术指南,也是一本深入探讨软件设计哲学的重要著作。通过学习本书中的知识,开发者可以更好地理解和掌握重构的艺术,从而提高软件的质量和可维护性。
《重构模式》是一本深入探讨软件重构技术的专业书籍,尤其针对C++、C#和Java等面向对象编程语言。重构是提升代码质量、可读性和维护性的重要手段,它涉及在不改变软件外部行为的前提下,改善其内部结构。这本书详细...
重构能够带来多方面的好处。它可以帮助程序员重新组织代码,使其更好地反映出程序的设计和结构,从而提高代码的可读性。可读性强的代码便于理解和维护,也有利于快速添加新功能。此外,重构也是发现和修复错误的有效...
《重构思路浅谈:最后一根稻草型时机》 重构,是软件开发过程中不可或缺的一环,旨在提升代码质量,改善系统架构,确保系统的可持续性和稳定性。本文将探讨一种特殊的重构时机——“最后一根稻草”型时机,以及重构...
《重构:改善既有代码的设计》是一本由Martin Fowler所著的经典书籍,专注于讲解如何通过重构技术来提升代码质量,使其更具可读性、可维护性和扩展性。在Java编程领域,重构是提升软件开发效率和降低维护成本的重要...
计算机技术变革带来产业生态重构报告(52页),资源名称:计算机技术变革带来产业生态重构报告(52页)计算机技术变革带来产业生态重构.pdf.zip...
- **增强可维护性**:重构能够使代码结构更加清晰,便于理解和修改,减少因代码难以理解而带来的维护成本。 - **促进团队协作**:高质量的代码更容易被其他开发者理解,有助于提升团队之间的协作效率。 - **支持敏捷...