`
java09eye
  • 浏览: 3570 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

重构原则

阅读更多
                                重构原则

1.重构的定义

重构(名词):对软件内部结构的一种调整,目的是在不改变"软件之可察行为"前提下,提高其可理解性,降低其修改成本.

重构(动词):使用一系列重构准则(手法),在不改变"软件之可察行为"前提下,调整其结构.

两种定义都强调是在不改变"软件的外部行为"前提下,不改变"软件之可察行为"就是说让修改不影响外部使用程序(程序员),在个外部来看,程序的行为和结果没有任何的变化.重构只是对程序内部结构进行调整,让代码更加容易理解,然后更容易维护.

2.重构的好处

能改进软件设计

使软件更容易被理解

能帮你找到bug

提高软件的开发速度

3.什么时候进行重构

三次法则:事不过三,三则重构.意思是说,一件事情,第一次只管去做,第二次做类似的事情会产生反感,但无论如何还是做了,第三次再做类似的事情,你就应该重构.

在添加新功能时进行重构.

在修改bug时进行重构

在代码复审时进行重构.

4.为什么重构有用

难以修改的程序具有以下特征:

难以阅读的程序,难以修改

逻辑重复的程序,难以修改

添加新行为时需要修改现有的代码,难以修改

带复杂条件逻辑的程序,难以修改

好的程序应该是:

容易阅读

所有逻辑都只在惟一地点指定

新的改动不会危及现有的行为

尽可能简单的表达条件逻辑

5.间接层和重构

间接层的存在的价值:

允许逻辑共享

分开解释意图和实现

将变化加以隔离

将条伯逻辑加以编码

但是过多的间接层会导致代码的层次太深,使代码难以阅读.因些要权衡加入间接层的利弊.

6.重构的难题

关系数据库与面向对象编程的问题:在对象模型和数据库模型之间插入一个分隔层,这就可以隔离两个模型各自的变化.升级某一模型时无需同时升级上述的分隔层即可.这样的分隔层会增加系统复杂度.但是能增加灵活度.

修改接口的问题:修改已发布的接口,因为已发布的接口会供外部人员(其它公司)使用,因此,修改接口会导致引用接口的其它程序不修改程序就无法运行.修改接口的最好的办法是增加一个新的接口,让旧接口调用新接口.这样原来的程序就不用修改了.对于接口的另一个建议是心尽量不要发布接口.

7.什么时候不进行重构

现有的程序无法运行,此时应该是重写程序,而不是重构

程序到了最后的交付期限

8.重构与设计

重构与设计是互补的,程序应该是先设计,而在开始编码后,设计上的不足可以用重构来弥补.设计应该是适度的设计,而不必过度的设计.如果能很容易的通过重构来适应需求的变化,那么就不必过度的设计,当需求改变时再重构代码.

9.重构与性能

提高性能的三种方法:

时间预算法:在设计时就对程序花费的时间进行预算,通常用于性能要求极高的实时系统.普通的企业应用程序一般对性能要求不高.只要不太慢就可以了.

持续关注法:要求程序员在任何时间都要设法保持系统的高性能.这个方法有个缺陷,就是大部分的程序90%的优化工作都是白费劲,这样会浪费大量的时间.

良好的分解方式:这个方式是在开发程序阶段不对性能投以任何关注,直到进入性能优化阶段,再分析程序中性能差的程序,然后对这些程序进分解,查出性能差的程序,进行优化.
分享到:
评论

相关推荐

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

    重构,正如标题所言,包括了“重构介绍”、“重构原则”以及“代码的坏味道”等多个方面,旨在提高代码的可读性、可维护性和整体质量。 首先,我们来探讨“重构介绍”。重构是一种系统性的修改现有代码的过程,目的...

    软件工程中的软件设计与重构原则.pptx

    ### 软件工程中的软件设计与重构原则 #### 第一章:软件设计原则 **1.1 什么是软件设计原则** 软件设计原则是指导软件设计过程中的准则和规范,旨在帮助开发者创建出高质量、易维护且具备良好扩展性的软件系统。...

    重构 中英双版

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

    系统重构.pdf 侯捷

    ### 系统重构的核心知识点 ...通过遵循一定的原则和方法,可以有效地降低重构过程中的风险,并确保重构活动的成功实施。对于软件开发者来说,掌握重构技术是一项重要的技能,有助于提高工作效率和产品质量。

    数据库重构.rar

    3. 重构原则: - 不改变外部行为:重构不应影响到应用程序的功能,保持与现有接口的兼容性。 - 小步快跑:每次只做小范围的修改,便于回滚和测试。 - 充分测试:重构前后都需要进行详尽的测试,确保数据完整性和...

    重构中的源码,可能对照重构的书籍进行阅读

    在实际学习过程中,我们可以打开这些文件,逐一分析其中的Java代码,尝试找出可以重构的地方,然后按照重构原则进行改造,以提高代码质量。 总的来说,通过结合理论学习和实际操作,开发者可以更深入地理解重构的...

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

    3. **重构的原则**:讲解马丁·福勒的重构原则,如小步前进、保证每次改动都通过测试等。 4. **重构模式**:列出一些常见的重构模式,如提取方法、替换条件为函数、移除重复代码等,每个模式都有其适用场景和好处。...

    Java重构示例一.docx

    在本文中,我们将深入探讨四个常见的重构原则和技术,这些技术可以帮助开发人员优化他们的Java代码。 首先,我们关注的是保持代码简洁。一个经典的例子是消除冗余条件语句。重构前的代码可能会包含if-else结构,如...

    重构英文版

    3. **重构原则**:在进行重构时,必须遵循持续集成、小步快跑的原则,每次只改变一小部分代码,并确保每次改动后都能通过所有测试,以防止引入新的错误。 4. **重构的步骤**:通常包括识别坏味道的代码(如过长方法...

    重构-改善既有代码的设计(chm清晰版)

    章节二 重构原则 章节三 代码的坏味道 章节四 构筑测试体系 章节五 重构名录 章节六 重新组织你的函数 章节七 在对象之间搬移特性 章节八 重新组织数据 章节九 简化条件表达式 章节十 简化函数调用 章节十一 处理...

    SQL应用重构 PDF

    2. **SQL重构原则** - **可读性**:重构的目标之一是提高代码的可读性,书中会强调如何编写清晰、易懂的SQL语句,使其他开发者能更容易地理解并维护。 - **可维护性**:重构有助于减少代码冗余,提高代码的可维护...

    重构:改善既有代码的设计/福勒(Martin Fowler)

    2. **重构原则**:首先,重构应以小步骤进行,每次改动只影响一小部分代码,这样可以减少出错的可能性。其次,重构必须配合自动化测试,确保每次改动后软件的行为未受影响。最后,重构应持续进行,不应等到问题积累...

    java代码重构经验总结

    本文将深入探讨Java代码重构的关键点,涵盖重构原则、重构技巧以及常见的代码“坏味道”(bad smells),并结合示例代码进行分析。 #### 一、重构的重要性与原则 **1. 重构时机** - **版本控制前的重构:** 在...

    PHP 杂谈《重构-改善既有代码的设计》之一 重新组织你的函数

    在日常开发中,关注重构原则,合理地安排重构的时机,以及采用恰当的重构方法,都是提高代码质量、降低维护成本的重要手段。同时,良好的编码习惯和对专业术语的掌握,也是提升个人技术水平和团队协作效率的关键因素...

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

    第2章 重构原则 53 2.1 何谓重构 53 2.2 为何重构 55 2.3 何时重构 57 2.4 怎么对经理说 60 2.5 重构的难题 62 2.6 重构与设计 66 2.7 重构与性能 69 2.8 重构起源何处 71 第3章 代码的坏味道 75...

    重构mvc实现struts框架

    3. **重构技巧**:如何识别和改进代码的坏味道,以及应用重构原则,如提取方法、替换条件为策略等。 4. **Struts框架原理**:Action、Form Bean、Action Mapping、Request Processor等核心概念。 5. **Struts与MVC的...

    重构教科书讲解ppt

    以下将详细解释其中提到的一些重构原则和技巧: 1. **过长参数列 (Long Parameter List)** - **问题**:函数接收过多的参数,这使得函数变得难以理解和使用,且不利于后续的扩展。 - **解决办法**:将这些参数...

    Java重构示例五.pdf

    总结来说,这个重构示例展示了以下几个重要的重构原则和技术: 1. **封装变化**:将变化的部分(如排序方式)封装到单独的类中,使其独立于其他代码。 2. **使用有意义的命名**:将整数值替换为具有描述性的枚举,...

    重构,改善既有代码 培训课件

    重构是软件开发过程中的一个重要环节,它关注的是改善既有代码的设计,以提高代码的可读性和维护性...通过理解和应用这些重构原则和技巧,可以有效地提升代码质量和开发效率,从而打造出更加健壮和易于维护的软件系统。

Global site tag (gtag.js) - Google Analytics