1、神秘命名 模块、类、函数、变量等的命名是编程中最难的两件事之一,正因为如此,改名可能是最常用的重构手法 对应的重构手法有:改变函数声明、变量改名、字段改名2、重复代码 顾名思义,就是在多处看到相同的代码结构 对应的重构手法有:移动语句、提炼函数3、过长的函数 确保函数内代码处在同一层抽象级,无须担心进程内的函数开销,提倡小函数4、过长参数列表 一个函数的参数一旦出现3个及以上,就需要注意,不易理解、使用和维护 对应的重构手法有:以查询取代参数、保持对象完整、引入参数对象、移除标记参数、函数组合成类5、全局数据 全局数据最显而易见的形式就是全局变量,他j可以给函数增加状态,这
1、可变数据 数据更新导致,而另外一处期待不同的值 对应的重构手法:封装变量、拆分变量、移动语句、提炼函数、将查询函数和修改函数分离、移除设值函数、查询取代派生变量、函数组合成类、函数组合成变换、引用对象改为值对象 欠理解2、发散式变化 每次只关心一个上下文(一旦产生修改,跳到系统某个点,只在该处做修改) 对应的重构手法:拆分阶段、搬移函数、提炼函数、提炼类3、霰弹式修改 类似于发散式变化,但是又恰恰相反(没明白书里这话是什么意思) 对应重构手法:搬移函数、搬移字段、函数组合成类、函数组合成变换、拆分阶段、内联函数、内联类4、依恋情结 最大化区域内部交互、最小化跨区域交互,也可
1、可变数据 数据更新导致,而另外一处期待不同的值 对应的重构手法:封装变量、拆分变量、移动语句、提炼函数、将查询函数和修改函数分离、移除设值函数、查询取代派生变量、函数组合成类、函数组合成变换、引用对象改为值对象 欠理解2、发散式变化 每次只关心一个上下文(一旦产生修改,跳到系统某个点,只在该处做修改) 对应的重构手法:拆分阶段、搬移函数、提炼函数、提炼类3、霰弹式修改 类似于发散式变化,但是又恰恰相反(没明白书里这话是什么意思) 对应重构手法:搬移函数、搬移字段、函数组合成类、函数组合成变换、拆分阶段、内联函数、内联类4、依恋情结 最大化区域内部交互、最小化跨区域交互,也可
1. 应用程序级别代码坏味道1.1. 布尔盲点1.1.1. 由于函数使用布尔值而导致的信息缺失1.1.2. 解决方案是将布尔替换为枚举类型1.2. 组合爆炸1.2.1. 不同的代码使用不同的参数组合来执行同一件事情的产物1.2.2. 解决方案使用泛型1.3. 人为复杂性1.3.1. 简单的架构复杂化1.3.2. 解决方案务必保持软件的简单易懂(KeepItSimple,Stupid,KISS)1.4. 数据泥团1.4.1. 相同的字段同时出现在不同的类和参数列表中时1.4.1.1. 说明系统中缺少类定义1.4.2. 识别并泛化缺失的类可以降低系统的复杂度1.5. 粉饰注释1.5.1. 注释中用
1. 应用程序级别代码坏味道1.1. 布尔盲点1.1.1. 由于函数使用布尔值而导致的信息缺失1.1.2. 解决方案是将布尔替换为枚举类型1.2. 组合爆炸1.2.1. 不同的代码使用不同的参数组合来执行同一件事情的产物1.2.2. 解决方案使用泛型1.3. 人为复杂性1.3.1. 简单的架构复杂化1.3.2. 解决方案务必保持软件的简单易懂(KeepItSimple,Stupid,KISS)1.4. 数据泥团1.4.1. 相同的字段同时出现在不同的类和参数列表中时1.4.1.1. 说明系统中缺少类定义1.4.2. 识别并泛化缺失的类可以降低系统的复杂度1.5. 粉饰注释1.5.1. 注释中用