首页/开发/代码质量与评审速查/手法:Preserve Whole Object(保持对象完整)
重构手法62 条

手法:Preserve Whole Object(保持对象完整)

从对象取出多个字段只为传参时,改为直接传对象:减少字段级耦合,被调函数可自行取用需要的数据;边界场景注意传递依赖范围是否变大。

场景调用处 placeOrder(day, month, year) 一类字段拆传
做法改传对象本身
权衡被调方与对象结构耦合变大时需评估

Java 示例

Java 示例
// 之前
boolean withinPlan(Plan plan, Range range) {
    return plan.withinRange(range.low(), range.high());
}

// 之后
boolean withinPlan(Plan plan, Range range) {
    return plan.withinRange(range);
}

易错点

  • 整对象传入后顺手改了对象字段:读参数变成写参数
  • 为通过对象引入跨层依赖:分层约束被打破

数据来源与参考

  • 《重构》第 2 版 · 第 11 章(Preserve Whole Object)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌