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

手法:Extract Function(提炼函数)

把一段可命名的逻辑取出为独立函数:用意图命名替代「这段是干什么的」注释,缩小函数体、暴露复用点;片段内局部变量越少,提炼越顺。

场景长函数中的独立片段、需要注释解释的代码
命名以做什么命名,而非怎么做
注意提炼后可再次重组到合适的类

Java 示例

Java 示例
// 提炼前
void printOwing(double amount) {
    printBanner();
    System.out.println("name: " + name);
    System.out.println("amount: " + amount);
}

// 提炼后
void printOwing(double amount) {
    printBanner();
    printDetails(amount);
}

void printDetails(double amount) {
    System.out.println("name: " + name);
    System.out.println("amount: " + amount);
}
提炼时若临时变量过多:先 Split Temporary Variable 或 Replace Temp with Query 减少对局部状态的依赖。

易错点

  • 提炼后名称与行为不符:把注释换成名字但没换语义
  • 一次提出多层嵌套的代码块:中间变量传递复杂,先拆小再提

数据来源与参考

  • 《重构》第 2 版 · 第 6 章(Extract Function)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌