首页/开发/代码质量与评审速查/手法:Replace Temp with Query(以查询取代临时变量)
重构手法62 条

手法:Replace Temp with Query(以查询取代临时变量)

把临时变量替换为查询函数:变量被就地复用会掩盖逻辑、阻碍提炼;函数化后可从任意调用点复用,也便于单测该表达式。

场景临时变量跨多个逻辑段使用、需要先赋值再读
收益可提炼、可复用、意图显露
注意热路径的重复计算可评估缓存

Java 示例

Java 示例
// 之前
double basePrice = quantity * itemPrice;

// 之后
double basePrice() {
    return quantity * itemPrice;
}

易错点

  • 把副作用表达式放进查询:命名像查询、行为像命令,误导调用方
  • 循环内高频调用纯计算查询:先度量再决定是否缓存

数据来源与参考

  • 《重构》第 2 版 · 第 6 章(Replace Temp with Query)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌