您好,欢迎来到二三娱乐。
搜索
您的当前位置:首页重构读书笔记——代码的坏味道

重构读书笔记——代码的坏味道

来源:二三娱乐

Duplicated Code(重复代码)

常见问题

  • 同一个类的两个函数含有相同的表达式
  • 两个互为兄弟的子类内含相同的表达式
  • 两个毫不相关的类有相同或相似的代码

常用的重构方法:

  • Extract Method 提炼方法
  • Pull Up Method 字段上移
  • Extract Class 提炼类

Long Method (过长函数)

常见问题

  • 在开发维护过程中,函数越来越长,逻辑越来越复杂,难以理解

常用的重构方法:

  • Extract Method 提炼方法
  • Decompose Conditional 分解表达式

注:函数并不是越短越好,一个函数尽量只完成一个功能。

Large Class(过大的类)

常见问题

  • 单个类功能太多
  • 有大量的实例变量,和重复代码

常用的重构方法:

  • Extract Class 提炼类
  • Extract Subclass 提炼子类
  • Extract Interface 提炼接口

Long Parameter List (过长参数列表)

常见问题

  • 函数功能越来越大
  • 不停添加各种特殊操作

常用的重构方法:

  • Replace Parameter With Method 以函数对象取代函数
  • Preserve Whole Object 保持对象完整
  • Introduce Parameter Object 引入参数对象

DivergentChange (发散式变化)

常见问题

  • 某个类因为不同原因在不同方向上发生变化,如修改某个功能,需要同时修改某几个函数

常用重构方法

  • Extract Class 提炼类

Shotgun Surgery (散弹式修改)

常见问题

  • 一种变化引起多个类修改

常用重构方法

  • Move Method 移动方法
  • Move Field 移动字段
  • Inline Class 内部类

Feature Envy (依恋情结)

常见问题

  • 类函数对某个类的以来程度远大于当前类

常用重构方法

  • Extract Method 提炼方法
  • Move Method 移动方法

Data Clumps(数据泥团)

常见问题

  • 数据结构设计混乱,多个类中的某些字段总是同时出现

常用重构方法

  • Extract Class 提炼类
  • Preserve Whole Object 保持对象完整
  • Introduce Parameter Object 引入参数对象

Primitive Obsession(基本类型偏执)

常见问题

  • 大量使用基本类型
  • 未对数据进行有效的抽象
  • 未对总是同时出现的字段封装

常用重构方法

  • Replace Type Code with Class
  • Extract Class

Switch Statements

常见问题

  • 面向对象程序应该少用Switch(或Case)
  • Switch散布在多个地方,修改会影响多个类

常用重构方法

  • Replace Conditional with Polymorphism
  • Replace Parameter with Explicit Methods

Parallel Inheritance Hierarchies(平行继承体系)

常见问题

  • 为某个类添加子类时,必须为另一个类相应的增加一个子类

常用重构方法

  • Move Method
  • Move Field

Lazy Class(冗赘类)

常见问题

  • 类和函数含有冗余操作

常用重构方法

  • Collapse Hierarchy
  • Inline Class

Speculative Generality(夸夸其谈未来性)

常见问题

  • 过分强调扩展性,使用代码难以理解
  • 添加许多多余的参数

常用重构方法

  • Collapse Hierarchy
  • Remove Parameter

Temporary Field (令人迷惑的临时字段)

常见问题

  • 类中某些字段,只有在及其特殊的条件下才会使用

常用重构方法

  • Extract Class

Message Chains(过度耦合的消息链)

常见问题

  • 多个类之间依赖大,a.x().y().z()....
  • 产生多个临时变量

常用重构方法

  • Hide Delegate

Middle Man

常见问题

  • 过度使用委托,某个类的大部分功能都在委托给其他类

常用重构方法

  • Remove Middle Man
  • Inline Method
  • Replace Delegation With Inheritance

Inappropriate Intimacy (狎昵关系)

常见问题

  • 两个类互相依赖度极高,类的内部实现影响彼此

常用重构方法

  • Move Method
  • Move Field
  • Replace Inheritance Delegation

Alternative Class with Different Interfaces(异曲同工类)

常见问题

  • 两个类 、函数做着实现相同的功能

常用重构方法

  • Extract Superclass
  • Move Method

Incomplete Library Class(不完美的库类)

常见问题

  • 引用的库设计不完善
  • 有许多特殊操作

常用重构方法

  • Introduce Foreign Method
  • Introduce Local Extensions

Data Class (纯稚数据类)

常见问题

  • 只包含数据和getter setter
  • 内部字段的 处理分散在各个类中

常用重构方法

  • Encapsulate Field
  • Encapsulate Collection
  • Remove Setting Method

Refused Bequest(被拒绝的馈赠)

常见问题

  • 子类继承过多不需要功能

常用重构方法

  • Push Down Method
  • Push Down Field

Comments(过多的注释)

当你感觉需要撰写注释时,请先尝试重构,试着让所有注释变得多余

Copyright © 2019- yule263.com 版权所有 湘ICP备2023023988号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务