`

代码重构的理解

阅读更多

 

一、为什么要代码重构(Refactoring)

 

 

在不改变系统功能的情况下,改变系统的实现方式。为什么要这么做?投入精力不用来满足客户关心的需求,而是仅仅改变了软件的实现方式,这是否是在浪费客户的投资呢?

代码重构的重要性要从软件的生命周期说起。软件不同与普通的产品,他是一种智力产品,没有具体的物理形态。一个软件不可能发生物理损耗,界面上的按钮永远不会因为按动次数太多而发生接触不良。那么为什么一个软件制造出来以后,却不能永远使用下去呢?


对软件的生命造成威胁的因素只有一个:需求的变更。一个软件总是为解决某种特定的需求而产生,时代在发展,客户的业务也在发生变化。有的需求相对稳定一些,有的需求变化的比较剧烈,还有的需求已经消失了,或者转化成了别的需求。在这种情况下,软件必须相应的改变。

考虑到成本和时间等因素,当然不是所有的需求变化都要在软件系统中实现。但是总的说来,软件要适应需求的变化,以保持自己的生命力。


这就产生了一种糟糕的现象:软件产品最初制造出来,是经过精心的设计,具有良好架构的。但是随着时间的发展、需求的变化,必须不断的修改原有的功能、追加新的功能,还免不了有一些缺陷需要修改。为了实现变更,不可避免的要违反最初的设计构架。经过一段时间以后,软件的架构就千疮百孔了。bug越来越多,越来越难维护,新的需求越来越难实现,软件的构架对新的需求渐渐的失去支持能力,而是成为一种制约。最后新需求的开发成本会超过开发一个新的软件的成本,这就是这个软件系统的生命走到尽头的时候。


代码重构就能够最大限度的避免这样一种现象。系统发展到一定阶段后,使用重构的方式,不改变系统的外部功能,只对内部的结构进行重新的整理。通过重构,不断的调整系统的结构,使系统对于需求的变更始终具有较强的适应能力。

 

 

 

二、通过代码重构可以达到以下的目标

 

 

持续偏纠和改进软件设计


重构和设计是相辅相成的,它和设计彼此互补。有了重构,你仍然必须做预先的设计,但是不必是最优的设计,只需要一个合理的解决方案就够了,如果没有重构,愈来愈像断线的风筝,脱缰的野马无法控制。重构其实就是整理代码,让所有带着发散倾向的代码回归本位。

 

 

使代码更易为人所理解

Martin Flower在《重构》中有一句经典的话:"任何一个傻瓜都能写出计算机可以理解的程序,只有写出人类容易理解的程序才是优秀的程序员。"对此,笔者感触很深,有些程序员总是能够快速编写出可运行的代码,但代码中晦涩的命名使人晕眩得需要紧握坐椅扶手,试想一个新兵到来接手这样的代码他会不会想当逃兵呢?


软件的生命周期往往需要多批程序员来维护,我们往往忽略了这些后来人。为了使代码容易被他人理解,需要在实现软件功能时做许多额外的事件,如清晰的排版布局,简明扼要的注释,其中命名也是一个重要的方面。一个很好的办法就是采用暗喻命名,即以对象实现的功能的依据,用形象化或拟人化的手法进行命名,一个很好的态度就是将每个代码元素像新生儿一样命名,也许笔者有点命名偏执狂的倾向,如能荣此雅号,将深以此为幸。

对于那些让人充满迷茫感甚至误导性的命名,需要果决地、大刀阔斧地整容,永远不要手下留情!

 

 

帮助发现隐藏的代码缺陷


重构代码时逼迫你加深理解原先所写的代码。笔者常有写下程序后,却发生对自己的程序逻辑不甚理解的情景,曾为此惊悚过,后来发现这种症状居然是许多程序员常患的"感冒"。当你也发生这样的情形时,通过重构代码可以加深对原设计的理解,发现其中的问题和隐患,构建出更好的代码。

 

 

从长远来看,有助于提高编程效率


当你发现解决一个问题变得异常复杂时,往往不是问题本身造成的,而是你用错了方法,拙劣的设计往往导致臃肿的编码。

改善设计、提高可读性、减少缺陷都是为了稳住阵脚。良好的设计是成功的一半,停下来通过重构改进设计,或许会在当前减缓速度,但它带来的后发优势却是不可低估的。

 

 

参考资料:    代码重构的方法    http://www.studyofnet.com/news/330.html

 

 

 

分享到:
评论

相关推荐

    代码重构.pdf

    《代码重构》一书由Martin Fowler编写,是软件开发领域中关于代码质量提升的经典之作。书中详细阐述了重构代码的必要性、重构的时机以及如何安全地重构代码。重构指的是在不改变软件外部行为的前提下,改进其内部...

    .java代码重构

    这个文件可能包含了一个关于代码重构的演示文稿,详细讲解了重构的相关理论、实践案例和技巧,对于深入理解和学习代码重构非常有帮助。 通过以上介绍,我们可以看出,代码重构是一个系统化的过程,需要结合多种...

    代码重构&模式

    **代码重构** 代码重构是软件开发过程中的一个重要环节,它是指在不改变代码外在行为的前提下,对代码结构、设计和实现进行改进,以提高代码的可读性、可维护性和内部结构。重构的主要目标是使软件更容易理解和修改...

    代码重构PDF

    代码重构并不意味着添加新功能或修复错误,而是对现有代码结构进行改进,使其更清晰、更易于理解和修改,同时保持原有功能不变。《代码重构》这本书是这个领域的经典之作,它深入探讨了重构的原理、方法和实践,旨在...

    代码重构 (C# & ASP.NET) 英文原版

    通过学习《代码重构 (C# & ASP.NET)》,开发者可以更好地理解和掌握重构这一关键技能,从而提高代码质量和项目成功率。书中的源代码示例,如压缩包中的 "[Wrox] Professional Refactoring in C# & ASP.NET" 文件,...

    测试驱动开发及代码重构

    在文件名“测试驱动开发及代码重构”中,可能包含了关于TDD实践的案例分析、具体步骤、最佳实践以及如何在实际项目中实施TDD和代码重构的指导。这样的资源对于学习和理解TDD方法论及其在软件开发中的应用非常有价值...

    java代码重构经验总结

    ### Java代码重构经验总结 在软件开发过程中,代码重构是一项重要的技能,它旨在不改变代码外部行为的前提下,改进其内部结构,从而提升代码质量和可维护性。本文将深入探讨Java代码重构的关键点,涵盖重构原则、...

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

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

    软件工程中的代码重构技术.pptx

    ### 软件工程中的代码重构技术 #### 第1章:简介 **1.1 什么是代码重构** 代码重构是一种软件工程活动,旨在不改变软件的外部行为的情况下,改进其内部结构和设计。这一过程有助于增强代码的质量和可维护性。 **...

    一本介绍如何将现有的 Java 代码重构为 Kotlin 代码的书籍

    综上所述,《从Java到Kotlin:重构指南》是一本非常适合Java开发者学习Kotlin并进行代码重构的专业书籍。它不仅提供了丰富的理论知识,还有大量的实践案例供读者参考,是从事软件开发工作的专业人士不可多得的宝贵...

    代码重构总结实例

    代码重构是一种改善软件设计、提升代码可读性和可维护性的技术。它并不改变代码的外在行为,而是通过改进代码结构来提高代码质量。在这个"代码重构总结实例"中,我们将探讨一系列相关知识点,包括重构的原因、原则、...

    代码重构源码(包含重构前后代码)

    代码重构是一种重要的软件开发实践,旨在改进代码的结构和可读性,而不改变其外部行为。这个压缩包文件“代码重构源码(包含重构前后代码)”提供了面向对象编程领域中的一个实例,具体是对影片出租店租赁程序的重构...

    Java 代码重构实例

    Java代码重构是一种优化编程实践,旨在改进代码的结构和可读性,而不改变其外部行为。重构对于提高软件质量和维护性至关重要,尤其是在大型项目中。以下是一些在Java重构中的关键原则和技巧,通过实例来展示如何应用...

    代码重构思想

    代码重构是一种重要的软件开发实践,其核心目标是改善代码的结构,提高代码的可读性和可维护性,而不改变其外在行为。这种思想在现代软件工程中扮演着至关重要的角色,尤其在大型项目和持续演进的软件系统中。 重构...

    swift-高仿微信iOSAppTemplate代码重构

    这个项目名为"swift-高仿微信iOSAppTemplate代码重构",旨在通过重构代码来提升应用的可读性、可维护性和性能。在这个过程中,开发者将深入理解Swift的面向对象编程、MVVM设计模式、网络请求处理、UI布局以及数据...

    C#代码重构31法

    《C#代码重构31法》是对C#编程实践中提高代码质量、可读性和可维护性的31种重构技术的总结。这些重构方法旨在优化代码结构,减少冗余,提高效率,同时也使得代码更加模块化,易于理解和测试。以下是部分重构方法的...

    Python代码重构:提升代码质量的艺术

    在软件开发中,代码重构是一个不可或缺的过程,旨在不改变外部行为...通过本文的介绍,读者应该能够理解在Python中进行代码重构的重要性和方法。通过持续的重构,我们可以不断提升代码的质量,构建更加优秀的软件产品。

    SourceMonitor: 代码重构的小工具,大用场

    它能够帮助程序员有效地进行代码重构,提高代码质量和可维护性。通过深入理解代码结构,SourceMonitor提供了一种直观的方式来了解项目中的关键信息,包括代码行数、注释比例、类和方法的复杂性等。 **核心功能** 1...

Global site tag (gtag.js) - Google Analytics