首页/开发/代码质量与评审速查/手法:Parameterize Function(函数参数化)
重构手法62 条

手法:Parameterize Function(函数参数化)

结构相同只是取值不同的多个函数合并为一个带参数的函数:消除重复、统一入口;参数含义太宽泛时拆回多个函数,避免布尔参数可读性问题。

场景两三个函数仅常量或字面量不同
做法合并 + 参数化 + 调用点替换
反向Remove Flag Argument

Java 示例

Java 示例
// 之前
int tenPercentRaise(Person p) { p.salary *= 1.1; }
int fivePercentRaise(Person p) { p.salary *= 1.05; }

// 之后
void raise(Person p, double factor) { p.salary *= factor; }

易错点

  • 参数越并越多:可读性低于合并前的多个函数
  • 布尔标志参数(true/false 分支):调用点含义不明

数据来源与参考

  • 《重构》第 2 版 · 第 11 章(Parameterize Function)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌