随着程序的演化,我们有必要重新思考早先的决策,并重写部分代码。这一过程非常自然。代码需要演化;它不是静态的事物。
重写、重做和重新架构代码合起来,称为重构。
当你遇到绊脚石 --- 代码不在合适,你注意到有两样东西其实应该合并或是其他任何对你来说是"错误"的东西 --------
不要对改动犹豫不决。应该现在就做。如果代码具备以下特征,你都应该考虑重构代码:
1. 重复。 你发现了对DRY原则的违反。
2.非正交的设计 。 你发现有些代码或设计可以变得更为正交。
3.过时的知识。 事情变了,需求转移了,你对问题的了解加深了 。 代码需要跟上这些变化。
4.性能。 为改善性能,你必须把功能从系统的一个区域转移到另一个区域。
重构你的代码 --------- 四处移动工能,更新先前的决策,事实上市痛苦管理的一次练习。让我们面对它,四处改动源码
可能相当痛苦:它几乎已经在工作,现在事实上却要被撕毁了。许多开发者不愿意,只是因为代码不完全正确就撕毁了代码。
但是在现实的工作中,时间压力常常被用作不进行重构的借口。但这个借口并不成立:现在没能进行重构,沿途修正问题将
需要投入多得多的时间,那是将需要考虑更多的依赖关系。我们会有更多的时间可用吗。我想应该没有。
我们可用用医学上的比喻来向老板解释这一原则:把需要重构的代码当做一个"肿瘤"。切除它需要进行侵入性的外科手术
你现在可用手术,趁它还小的时候把它取出。你也可以等它增大扩散 ------- 但那是再切除它就会更昂贵、更危险。等得久
一点,“病人” 就可能会丧命。
怎样就行重构
就其重构的核心而言,重构就是重新设计。你或你们团队的其他人设计的任何东西可以根据新的事实、更深的理解、变化
需求、等等,重新进行设计。但如果你无节制的撕毁大量代码,你可能会发现自己处在比一开始更糟的位置上。
重构是一项需要慎重、深思熟虑、小心进行的活动。关于怎样进行利大于弊的重构, Martin Fowler 给出了以下提示。
1.不要试图在重构的同时增加工能。
2. 在开始重构之前,确保你拥有良好的测试。尽可能经常运行这些测试。这样,如果你改动破坏了任何东西,你就能很快知道。
3.采取短少、深思熟虑的步骤:把某个字段从一个类移往另一个,把两个类似的方法融合进超类中。重构常常涉及到进行许
多局部改动 ,继而产生更大规模的改动。如果你使你的步骤保持短小,并在每个步骤后进行测试,你将能够避免长时间
的调试。
确保对模块做出剧烈的改动, 比如以一种不兼容的方式更改了其接口或功能,会破坏构建,这也很有帮助。也就是说,这
些代码的客户应该无法通过编译。于是你可以很快找到这些老客户,并做出必要的改动,让他们及时更新。
所以,下次你看到不怎么合理代码是,即要修正它,也要修正依赖它的每样东西。要管理痛苦:如果它现在有损害,但以后
的损害会更大,你也许最好一劳永逸地修正它。不要容忍破窗户。
以上是<<程序员修炼之道>>本书中对代码重构的讲解。
分享到:
相关推荐
**代码重构** 代码重构是软件开发过程中的一个重要环节,它是指在不改变代码外在行为的前提下,对代码结构、设计和实现进行改进,以提高代码的可读性、可维护性和内部结构。重构的主要目标是使软件更容易理解和修改...
《代码重构》一书由Martin Fowler编写,是软件开发领域中关于代码质量提升的经典之作。书中详细阐述了重构代码的必要性、重构的时机以及如何安全地重构代码。重构指的是在不改变软件外部行为的前提下,改进其内部...
改善既有的代码重构(ppt),改善既有的代码重构,改善既有的代码重构PPT
综上所述,《从Java到Kotlin:重构指南》是一本非常适合Java开发者学习Kotlin并进行代码重构的专业书籍。它不仅提供了丰富的理论知识,还有大量的实践案例供读者参考,是从事软件开发工作的专业人士不可多得的宝贵...
《.java代码重构》 代码重构是软件开发过程中的一个重要环节,它涉及到对现有代码的改进,以提高代码的可读性、可维护性,同时并不改变其外在行为。在Java编程中,代码重构是一种常见的实践,尤其在大型项目中,...
### 软件工程中的代码重构技术 #### 第1章:简介 **1.1 什么是代码重构** 代码重构是一种软件工程活动,旨在不改变软件的外部行为的情况下,改进其内部结构和设计。这一过程有助于增强代码的质量和可维护性。 **...
Java 代码重构经验分享 Java 代码重构是指在不改变外部行为的情况下,修改代码的内部结构,以提高代码的可维护性、可读性和可扩展性。本文总结了 Java 代码重构的经验和技术规范,包括重构要求、重构的工作、代码的...
### Java代码重构经验总结 在软件开发过程中,代码重构是一项重要的技能,它旨在不改变代码外部行为的前提下,改进其内部结构,从而提升代码质量和可维护性。本文将深入探讨Java代码重构的关键点,涵盖重构原则、...
在文件名“测试驱动开发及代码重构”中,可能包含了关于TDD实践的案例分析、具体步骤、最佳实践以及如何在实际项目中实施TDD和代码重构的指导。这样的资源对于学习和理解TDD方法论及其在软件开发中的应用非常有价值...
**代码重构:C#与ASP.NET的实践指南** 在软件开发过程中,代码重构是一个至关重要的环节,它旨在改进代码的内部结构,不改变其外部行为。《代码重构 (C# & ASP.NET)》英文原版提供了针对这两种技术的重构策略和技巧...
**代码重构:提升软件设计与代码质量的关键技术** 在软件开发过程中,代码重构是一个至关重要的环节,它关乎到代码的可读性、可维护性和整体性能。代码重构并不意味着添加新功能或修复错误,而是对现有代码结构进行...
《C#代码重构31法》是对C#编程实践中提高代码质量、可读性和可维护性的31种重构技术的总结。这些重构方法旨在优化代码结构,减少冗余,提高效率,同时也使得代码更加模块化,易于理解和测试。以下是部分重构方法的...
这个项目名为"swift-高仿微信iOSAppTemplate代码重构",旨在通过重构代码来提升应用的可读性、可维护性和性能。在这个过程中,开发者将深入理解Swift的面向对象编程、MVVM设计模式、网络请求处理、UI布局以及数据...
### Java代码重构:掌握优化现有代码的艺术 #### 引言 在软件开发的过程中,随着项目的不断演进,代码库往往会出现复杂度增加、可读性和可维护性下降的问题。这时,进行代码重构变得至关重要。重构是指在不改变...
Java设计模式和代码重构是软件开发中的核心概念,它们对于编写高效、可维护的代码至关重要。这个PDF合集涵盖了这两个主题,旨在帮助开发者提升代码质量和软件设计能力。 首先,我们来详细了解一下Java设计模式。...
它能够帮助程序员有效地进行代码重构,提高代码质量和可维护性。通过深入理解代码结构,SourceMonitor提供了一种直观的方式来了解项目中的关键信息,包括代码行数、注释比例、类和方法的复杂性等。 **核心功能** 1...
在本篇博客“代码重构-以贪吃蛇为示例(四)-继续封装”中,作者通过实现贪吃蛇游戏来阐述代码重构的重要性和具体实践。贪吃蛇游戏是许多程序员学习编程时的入门项目,它包含了基本的逻辑控制、用户输入处理以及游戏...
代码重构是一种重要的软件开发实践,其核心目标是改善代码的结构,提高代码的可读性和可维护性,而不改变其外在行为。这种思想在现代软件工程中扮演着至关重要的角色,尤其在大型项目和持续演进的软件系统中。 重构...