首页/开发/代码质量与评审速查/手法:Remove Assignments to Parameters(移除对参数的赋值)
重构手法62 条

手法:Remove Assignments to Parameters(移除对参数的赋值)

参数是调用方契约的一部分:在函数内改写参数会掩盖真实输入、制造调试困惑;改用局部变量承接中间值,保持参数只读。

为什么参数被改写后原值不可见、跟踪困难
做法局部变量承接、参数视为只读
语言多数风格指南明确禁止改写入参

Java 示例

Java 示例
// 之前
double discount(double inputVal) {
    if (inputVal > 100) inputVal -= 10;
    return inputVal;
}

// 之后
double discount(double inputVal) {
    double result = inputVal;
    if (result > 100) result -= 10;
    return result;
}

易错点

  • 按引用/指针语义语言里混淆:先弄清语言参数传递模型
  • 局部变量与原参数起名过近:读代码仍易混

数据来源与参考

  • 《重构》第 2 版 · 第 9 章(Remove Assignments to Parameters)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌