转载: http://blog.csdn.net/lovelion/article/details/9889095
Martin Fowler针对22种代码味道,提出了相应的重构手段,。具体而言,如下表所示:
代码味道
常用重构手段
接口不同的相似类(Alternative Classes with Different Interfaces)【异曲同工的类】
● 重命名方法(Rename Method)
● 搬移方法(Move Method)
注释(Comments)【过多的注释】
● 抽取方法(Extract Method)
● 引入断言(Introduce Assertion)
数据类(Data Class)【纯稚的数据类】
● 搬移方法(Move Method)
● 封装字段(Encapsulate Field)
● 封装集合(Encapsulate Collection)
数据泥团(Data Clump)
● 抽取类(Extract Class)
● 引入参数对象(Introduce Parameter Object)
● 保持对象完整(Preserve Whole Object)
发散式改变(Divergent Change)
● 抽取类(Extract Class)
重复性代码(Duplicated Code)
● 抽取方法(Extract Method)
● 抽取类(Extract Class)
● 上移方法(Pull Up Method)
● 构建模板方法(Form Template Method)
依恋情结(Feature Envy)
● 搬移方法(Move Method)
● 搬移字段(Move Field)
● 抽取方法(Extract Method)
不当的紧密性(Inappropriate Intimacy)【狎昵关系】
● 搬移方法(Move Method)
● 搬移字段(Move Field)
● 将双向关联改为单向(Change Bidirectional Association to Unidirectional)
● 将继承替换成委托(Replace Inheritance with Delegation)
● 隐藏委托(Hide Delegate)
不完备的库类(Incomplete Library Class)
● 引入外来方法(Introduce Foreign Method)、
● 引入本地扩展(Introduce Local Extension)
过大的类(Large Class)
● 抽取类(Extract Class)
● 抽取子类(Extract Subclass)
● 抽取接口(Extract Interface)
● 将数据值替换为对象(Replace Data Value with Object)
懒惰类(Lazy Class)【冗赘类】
● 内联类(Inline Class)
● 折叠继承体系(Collapse Hierarchy)
过长的方法(Long Method)
● 抽取方法(Extract Method)
● 将临时变量替换为查询(Replace Temp with Query)
● 将方法替换为方法对象(Replace Method with Method Object)
● 分解条件式(Decompose Conditional)
过长的参数表(Long Parameter List)
● 将参数替换为方法(Replace Parameter with Method)
● 引入参数对象(Introduce Parameter Object)
● 保持对象完整(Preserve Whole Object)
消息链(Message Chains)【过渡耦合的消息链】
● 隐藏委托(Hide Delegate)
中间人(Middle Man)
● 移除中间人(Remove Middle Man)
● 内联方法(Inline Method)
● 将委托替换为继承(Replace Delegation with Inheritance)
并行继承体系(Parallel Inheritance Hierarchies)
● 搬移方法(Move Method)
● 搬移字段(Move Field)
基本类型困扰(Primitive Obsession)【基本类型偏执】
● 将数据值替换为对象(Replace Data Value with Object)
● 抽取类(Extract Class)
● 引入参数对象(Introduce Parameter Object)
● 将数组替换为对象(Replace Array with Object)
● 将类型码替换为类(Replace Type Code with Class)
● 将类型码替换为子类(Replace Type Code with Subclasses)
● 将类型码替换为状态/策略(Replace Type Code with State/Strategy)
拒收的遗赠(Refused Bequest)
● 将继承替换为委托(Replace Inheritance with Delegation)
霰弹式修改(Shotgun Surgery)
● 搬移方法(Move Method)
● 搬移字段(Move Field)
● 内联类(Inline Class)
过分一般性(Speculative Generality)【夸夸其谈的未来性】
● 折叠继承体系(Collapse Hierarchy)
● 内联类(Inline Class)
● 移除参数(Remove Parameter)
● 重命名方法(Rename Method)
Switch语句(Switch Statements)【Switch惊悚现身】
● 将条件式替换为多态(Replace Conditional with Polymorphism)
● 将类型码替换为子类(Replace Type Code with Subclasses)
● 将类型码替换为状态/策略(Replace Type Code with State/Strategy)
● 将参数替换为显式方法(Replace Parameter with Explicit Methods)
● 引入Null对象(Introduce Null Object)
临时字段(Temporary Field)【令人迷惑的暂时值域】
● 抽取类(Extract Class)
● 引入Null对象(Introduce Null Object)
参考资料:
【作者:刘伟 http://blog.csdn.net/lovelion】
分享到:
相关推荐
### Java代码重构经验总结 在软件开发过程中,代码重构是一项重要的技能,它旨在不改变代码外部行为的前提下,改进其内部结构,从而提升代码质量和可维护性。本文将深入探讨Java代码重构的关键点,涵盖重构原则、...
总结来说,软件重构是一项关键的技能,它要求开发者时刻关注代码的结构和设计,通过遵循重构原则,识别并消除代码的坏味道,从而提高代码的可读性和可维护性。这是一个持续的过程,需要在项目开发的每一个阶段都加以...
**代码重构** 代码重构是软件开发过程中的一个重要环节,它是指在不改变代码外在行为的前提下,对代码结构、设计和实现进行改进,以提高代码的可读性、可维护性和内部结构。重构的主要目标是使软件更容易理解和修改...
### 代码重构总结 #### 重构的理由:代码的“坏味道” 代码重构是对现有软件进行改进的过程,旨在提高代码质量而不改变其外部行为。当提到重构时,我们通常指的是识别和修正那些使得代码难以理解和维护的特性。...
本文总结了 Java 代码重构的经验和技术规范,包括重构要求、重构的工作、代码的坏味道和异常处理。 重构要求 在进行代码重构时,需要遵守以下要求: 1. 安全第一,确保关键部分的代码正确无误,先做出 demo,各...
### 软件工程中的代码重构技术 #### 第1章:简介 **1.1 什么是代码重构** 代码重构是一种软件工程活动,旨在不改变软件的外部行为的情况下,改进其内部结构和设计。这一过程有助于增强代码的质量和可维护性。 **...
总结起来,代码重构是一种主动优化代码的策略,旨在提升代码的可读性、可维护性和设计质量,而不影响原有功能。通过学习和应用各种重构技术,开发者可以更好地管理复杂性,提高软件的健壮性和可扩展性。"重构——...
3. 代码的坏味道:包括神秘命名、重复代码、过长函数、过长参数列表、全局数据、可变数据、发散式变化、霰弹式修改、依恋情结、数据泥团、基本类型偏执、重复的switch、循环语句、冗赘的元素、夸夸其谈通用性、临时...
- 识别问题:发现代码中的坏味道,如过长的函数、重复代码、复杂的条件语句等。 - 设计新结构:思考如何改进现有的代码结构,使其更清晰、简洁。 - 执行重构:按照预设的步骤进行修改,确保每次只改变一小部分。 ...
1. **代码坏味道**:书中列举了多种代码“坏味道”,如重复代码、过长函数、过大的类等,这些都是代码质量下降的标志,需要通过重构来解决。作者提供了识别这些坏味道的方法,并提出了解决策略。 2. **重构步骤**:...
此外,重构作为一种实践,能够让程序员学会如何辨识代码中的坏味道,即那些可能导致设计问题的迹象,以及如何通过重构的技巧来净化代码。 Martin Fowler与重构领域的一些其他知名专家,如Kant Beck、John Brant、...
书中详细介绍了多种重构技术,如提取方法、移动函数、替换条件为函数等,这些技术有助于消除代码中的坏味道,如冗余代码、复杂的条件语句、过长的方法等。 此外,书中还会讲解如何在团队环境中进行重构,包括版本...
6. **坏味道的代码**:书中列出了多种表明代码需要重构的“坏味道”,如过长函数、重复代码、复杂的条件表达式等。识别这些坏味道是开始重构的第一步。 7. **重构工具**:现代IDE和代码编辑器通常包含重构工具,如...
1. **提高代码质量**:通过重构可以去除代码中的坏味道,使代码更加清晰、简洁。 2. **增强可维护性**:良好的代码结构能够帮助开发者更快地理解代码逻辑,从而更容易地进行后续的维护工作。 3. **促进团队协作**:...