重构手法——函数行为重塑类 | 语意 | 移动语句

55 阅读2分钟

简介

"移动语句"是改善代码可读性的基础重构手法。通过调整代码执行顺序,使相关逻辑集中呈现,可以降低理解成本,提升代码维护效率。

针对的症状(代码坏味道)

  • 变量声明与使用位置分离
  • 相关操作分散在不同代码块
  • 存在不必要的临时变量
  • 代码执行顺序不直观

移动语句的详细步骤

  1. 识别关联代码块
    • 查找被中间代码隔开的关联语句
    • 标记需要移动的代码段
  2. 分析依赖关系
    • 确认语句间没有数据依赖冲突
    • 检查作用域和生命周期
  3. 调整代码位置
    • 将相关语句移动到相邻位置
    • 保持代码执行顺序不变
  4. 验证逻辑
    • 确保重构后功能不变
    • 调整变量作用域

示例

重构前代码:

void processOrder(Order order) {
    double tax = calculateTax(order);
    sendConfirmationEmail(); // 不相关操作

    double total = order.getAmount() + tax;
    printReceipt(total);
}

重构后代码:

void processOrder(Order order) {
    double tax = calculateTax(order);
    double total = order.getAmount() + tax;

    printReceipt(total);
    sendConfirmationEmail(); // 相关操作集中在前
}

练习

基础练习题

  1. 变量声明移动
// 重构前
void renderPage() {
    String header = buildHeader();
    // ...其他操作...
    String footer = buildFooter();
    output(header + footer);
}

进阶练习题

  1. 条件判断重组

    // 重构前
    boolean isValid(User user) {
        logValidationStart();
        if (user == null) return false;
        if (user.getAge() < 18) return false;
        // ...其他检查...
    }
    

综合拓展练习题

  1. 复杂逻辑整合

    // 重构前
    void exportData() {
        connectDB();
        DataSet data = queryData();
        File file = createTempFile();
        // ...格式转换...
        uploadToCloud(file);
        cleanupTempFiles();
    }
    

代码审查要点

  1. 优点:

    • 提高代码线性可读性
    • 减少变量作用域跨度
    • 凸显核心业务逻辑
  2. 潜在问题:

    • 保持执行顺序不变
    • 注意闭包和副作用
    • 避免破坏异常处理