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

重构-改善现有代码的设计笔记

UP 
阅读更多
1、提炼
就是对某个过程的一部分,或某个事物的一部分进行抽象并概念化,以减小所表达的目的(要做什么)和实现(做什么,如何做)之间的语义差距。

运用提炼的重构手法包括
Extract Method、
Split Temporary Variable、
Extract Class、
Extract Subclass、
Extract Superclass、
Extract Interface等

2、内联
就是用其直接实现替换原来的间接调用,通过内联可以去掉意义不大的间接性。

运用内联的重构手法包括
Inline Method、
Inline Temp、
Inline Class

3、移动
在类之间(包括父类和子类之间)移动属性和方法,以使类之间职责更明确更清晰。

运用移动的重构手法包括
Move Method、
Move Field、
Pull Up Field、
Pull Up Method、
Pull Up Constructor Body、
Push Down Method、
Push Down Field

4、替换
将一种实现方式用另一种实现方式替代,以便于更直接更集中和更灵活

运用替换的重构手法包括
Replace Temp with Query、
Replace Method with Method Object、
Replace Date Value with Object、
Replace Array with Object、
Replace Magic Number with Symbolic Constant、
Replace Record with Data Class、
Replace Type Code with Class、
Replace Type Code with Subclasses、
Replace Type Code with State/Strategy、
Replace Subclass with Fields、
Replace Nested Conditional with Guard Clauses、
Replace Conditional with Polymorphism、
Replace Paramether with Explicit Methods、
Replace Parameter with Method、
Replace Constructor with Factory Method、
Replace Error Code with Exception、
Replace Exception with Test、
Replace Inheritance with Delegation、
Replace Delegation with Inheritance

5、改变
改变和替换语义上有些类似,其间的差别还不是很清楚

运用改变的重构手法包括
Change Value to Reference,
Change Reference to Value,
Change Unidirectional Association to Biderectional
Change Biderectional Association to Unidirectional

6、其他
包括增加Add、移除Remove、隐藏Hide、引入Introduce、封装Encapsulate、合并Consolidate等等
分享到:
评论

相关推荐

    《重构-改善既有代码的设计》电子书以及总结的书中源码

    重构是提高代码质量、可读性和维护性的重要手段,通过对现有代码进行一系列微小的改进,而不改变其外在行为,逐渐优化代码结构。在这个压缩包中,包含的资源有《重构》一书的电子版以及书中提到的源码实例。 电子书...

    《重构_改善既有代码设计》观后感PPT

    【美】马丁福勒 著 是国际著名的面向对象分析设计、UML、模式等方面的专家,敏捷开发方法的创始人之一 重构_改善既有代码设计 软件工程领域的超级经典巨著,与另一巨著《设计模式》并称"软工双雄

    《重构》----学习笔记

    重构的益处多样,包括改善软件设计,使代码更易于阅读和理解,帮助定位和修复bug,以及提高编程效率。重构应该成为开发过程中的常态,特别是在添加新功能、修复错误或代码审查时,都是进行重构的好时机。当发现代码...

    .NET 快速重构 - 学习笔记

    重构是一个系统性的过程,旨在改善软件设计,优化代码结构,而不改变其外在行为。在.NET开发环境中,重构是不可或缺的技能,它可以帮助开发者更好地理解和管理日益复杂的项目。 首先,我们要理解重构的核心目标:...

    重构:改善既有代码的设计(第2版)学习笔记

    《重构:改善既有代码的设计(第2版)》是一本由马丁·福勒(Martin Fowler)编著的经典软件工程书籍,主要关注的是如何通过一系列微小的改变来逐步改进现有代码的质量,提升软件设计的可读性、可维护性和可扩展性。...

    重构_改善既有代码的设计.rar

    在编程领域,重构是一种系统性的修改现有代码的过程,而不改变其外在行为,目的是提升软件设计,使其更易于理解和修改。 1. **重构的意义**:重构是软件开发中的重要环节,它有助于减少代码复杂性,提高代码结构的...

    重构笔记

    重构是指在不改变代码外在行为的前提下,对代码进行修改,以改善其内部结构。这一过程可以是局部的,也可以是整体的,目标是使代码更易于理解和修改,同时保持软件功能的稳定。 在源码层面,重构涉及多种技术,如...

    重构 学习笔记 refactoring martin fowler

    重构是软件开发过程中的一个重要环节,它涉及到对现有代码的改进,目的是为了提高代码的可读性、可维护性和设计质量,而不改变其外部行为。本文主要围绕重构的关键概念、原则、时机以及面临的挑战展开讨论。 首先,...

    MemoSam3 重构基本完成

    4. **错误修复**:发现并修复现有代码中的错误或缺陷是重构的重要目标,以提高系统的稳定性和可靠性。 5. **测试**:重构过程中,单元测试和集成测试必不可少,确保每次修改后系统的行为没有发生变化,同时保证新...

    面向对象学习笔记········

    - **重构**:通过改善现有代码结构,提高代码可读性和可维护性,而无需改变其外部行为。 - **测试驱动开发**(TDD):先编写测试用例,再编写满足这些测试的代码,确保代码质量。 5. **面向对象编程语言示例** -...

    java 遗留问题

    5. **设计模式不当**:评估现有的设计模式,考虑是否需要引入更合适的设计模式以改善代码结构。 6. **性能优化**:通过性能测试找出瓶颈,优化算法,减少内存占用,提高响应速度。 7. **单元测试不足**:编写充分...

    Java实验指导书 2009

    - 探讨如何通过重构改善现有代码的质量。 **深入思考:** - 思考如何将所学的知识应用于实际项目开发中。 - 探索软件工程领域的最佳实践和发展趋势。 --- 以上内容仅为《Java实验指导书 2009》的部分章节概述。每...

    技术图书。001需要的不多。。技术图书。

    - 《重构:改善既有代码的设计》:帮助程序员学会如何改进现有代码结构而不改变其功能。 2. **前端开发**: - 《HTML与CSS设计与构建网站》:适合初学者学习网页布局的基础知识。 - 《JavaScript高级程序设计》...

    Extreme Programming Explained

    - **重构(Refactoring)**:不断改进现有代码,提高其质量和可维护性。 - **结对编程(Pair Programming)**:两人一组共同编写代码,提高代码质量并促进知识共享。 - **集体所有权(Collective Ownership)**:...

    COMP504-Grad-OOP-and-Design

    4. **代码重构**:改善代码结构和设计,而不改变其外在行为。 5. **测试驱动开发(TDD)**:先写测试,再编写满足测试的代码,确保代码质量。 6. **持续集成/持续部署(CI/CD)**:自动化构建、测试和部署过程,以确保...

    hidden-knowledge:来自 LKCE14 的发现隐藏知识讲座

    5. **重构**:通过对现有代码的重构,开发者可以发现设计上的不足,改善代码结构,提高可读性和可维护性。 6. **最佳实践分享**:分享团队内的最佳实践,可以帮助所有成员避免重复劳动,减少错误,并且提升整体生产...

    客客威客系统KPPW 2.2 GBK Beta.zip

    针对威客任务交易日益增长的需求,KPPW对现有的悬赏任务、招标任务进行了重新的开发设计。在老版本基础上确定出了新的用户体验、任务权限、代码规范等多项标准,让任务模型自由拆解和开发拓展性更强。 KPPW...

    客客威客系统KPPW 2.2 UTF8 Beta

    客客威客系统KPPW是一款基于PHP+MYSQL技术构架的威客系统 ,积客客团队多年实践... 针对威客任务交易日益增长的需求,KPPW对现有的悬赏任务、招标任务进行了重新的开发设计。在老版本基础上确定出了新的用户体验、任务

Global site tag (gtag.js) - Google Analytics