重构手法——代码健壮性增强类|代码洁癖治理|删除标志参数

46 阅读1分钟

简介

"删除标志参数"(Remove Flag Argument)重构手法用于消除控制方法行为的布尔型参数。当方法通过布尔参数执行不同分支的逻辑时,应该拆分为多个独立的方法。

典型代码坏味道

  • 方法内部存在条件分支检查布尔参数
  • 方法名称无法清晰表达所有功能
  • 调用方需要传递true/false控制方法行为

重构步骤

  1. 识别标志参数

    • 查找接受布尔参数的方法
    • 分析参数控制的逻辑分支
    • 确定每个分支的独立语义
  2. 创建独立方法

    • 为每个分支创建新方法
    • 将对应逻辑迁移到新方法
    • 保持原方法作为过渡
  3. 修改调用方

    • 替换所有传递true的调用点
    • 替换所有传递false的调用点
    • 更新单元测试用例
  4. 移除原方法

    • 删除包含标志参数的方法
    • 清理相关文档注释
    • 验证接口兼容性

示例

重构前:

public class OrderService {
    // 标志参数控制导出格式
    public void exportOrder(Order order, boolean isPDF) {
        if (isPDF) {
            generatePDF(order);
        } else {
            generateCSV(order);
        }
    }
}

重构后:

public class OrderService {
    public void exportOrderAsPDF(Order order) {
        generatePDF(order);
    }

    public void exportOrderAsCSV(Order order) {
        generateCSV(order);
    }
}

专项练习

基础练习

  1. 重构消息通知方法

    class Notification {
        public void send(String message, boolean isUrgent) {
            if (isUrgent) {
                sendSMS(message);
            } else {
                sendEmail(message);
            }
        }
    }
    

进阶练习

  1. 多重标志参数处理

    class ReportGenerator {
        public void generate(ReportData data, boolean includeSummary, boolean formatForWeb) {
            // 复杂的分支逻辑...
        }
    }
    

代码审查清单

优势验证

  • 方法调用意图更清晰
  • 消除条件分支复杂度
  • 增强方法的内聚性

风险提示

  • 可能增加方法数量
  • 需要更新所有调用方
  • 影响已发布的API接口