| 信号 | 函数里别的对象前缀出现次数超过自身 |
|---|---|
| 手法 | Move Function(移动后删除原方法) |
| 例外 | 策略/访问者模式中有意为之的分离 |
移动前
移动前
double total(Purchase p) {
return p.items().stream()...
}移动后
移动后
class Purchase {
double total() {
return items.stream()...
}
}函数频繁访问另一个对象的内部数据:说明职责放错了地方,用 Move Function 搬过去;数据与行为同处一个模块,边界才清晰。
| 信号 | 函数里别的对象前缀出现次数超过自身 |
|---|---|
| 手法 | Move Function(移动后删除原方法) |
| 例外 | 策略/访问者模式中有意为之的分离 |
double total(Purchase p) {
return p.items().stream()...
}class Purchase {
double total() {
return items.stream()...
}
}