首页/开发/代码质量与评审速查/手法:Replace Derived Variable with Query(派生值改为查询)
重构手法62 条

手法:Replace Derived Variable with Query(派生值改为查询)

删除可由其他数据推导的存储字段:改为计算查询后不存在同步问题;性能敏感且计算昂贵时,用显式缓存并管理失效,而不是隐式冗余。

收益消除同步点与不一致窗口
例外昂贵计算可缓存,但需明确失效策略
场景合计、计数、状态派生值

Java 示例

Java 示例
// 之前:discountedTotal 字段需要每处更新
// 之后
double discountedTotal() {
    return baseTotal - discount;
}

易错点

  • 热点路径每次全量重算:改前先度量调用频率
  • 缓存失效逻辑写错:不如不缓存,退回实时计算

数据来源与参考

  • 《重构》第 2 版 · 第 9 章(Replace Derived Variable with Query)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌