重构代码之替换参数为显式方法

替换参数为显式方法 是一种重构技术,旨在通过替换方法参数来创建更清晰、更具可读性的代码。当一个方法包含标志性参数时,该方法的行为可能会根据参数的不同而发生改变。这样会导致方法的调用方式不够明确,因为调用者不一定能直观地知道每个参数的含义。此时,可以将此方法拆分成多个更具描述性的方法,以提高代码的可读性和可维护性。

一、示例

假设你有一个方法 SetDiscount,它接收一个布尔参数来决定是否应用学生折扣:

csharp 复制代码
public void SetDiscount(bool isStudent)
{
    if (isStudent)
    {
        // 学生折扣逻辑
    }
    else
    {
        // 非学生折扣逻辑
    }
}

此时,SetDiscount(true) 或 SetDiscount(false) 对调用者而言不够直观。通过替换参数,你可以将其拆分为两个单独的方法。

二、重构后的代码

将原方法替换为两个具体方法,每个方法名清楚地表达了其行为:

csharp 复制代码
public void ApplyStudentDiscount()
{
    // 学生折扣逻辑
}

public void ApplyStandardDiscount()
{
    // 非学生折扣逻辑
}

这样,调用时可以更加清晰地看到具体折扣类型:

csharp 复制代码
// 清晰地显示不同折扣类型
ApplyStudentDiscount();
ApplyStandardDiscount();

三、适用场景

  • 当参数值具有布尔或枚举类型时,此方法特别有用,因为不同参数值通常对应不同的行为。
  • 当方法行为复杂并且在调用端对参数理解较困难时。
  • 增加代码可读性和可维护性,尤其是当方法的逻辑根据参数变化较大时。

四、优缺点

优点:

  • 增强代码的可读性,使方法的意图更明确。
  • 减少调用者对参数的猜测,有利于维护。

缺点:

  • 可能导致方法数量增加,特别是在有多个标志参数的情况下。

在使用替换参数为显式方法时,应根据实际场景衡量方法的数量和可读性之间的平衡。

相关推荐
微三云 - 廖会灵 (私域系统开发)3 天前
企业大模型应用工程化思考:跳出 Demo 陷阱,构建「业务‑资产‑Agent」三层落地架构
人工智能·矩阵·重构
慧都小项3 天前
Python 跨文件重构怎么验证?PyCharm 用法查找、重构预览与测试流程
python·重构·pycharm·单元测试
江畔柳前堤4 天前
字节跳动·大模型应用知识手册
前端·人工智能·深度学习·opencv·目标检测·重构·transformer
微三云 - 廖会灵 (私域系统开发)6 天前
私域电商多端商城系统架构实践:小程序 / APP / H5 一套后端如何落地
矩阵·重构·零售
智慧物业老杨6 天前
人机协同的物业服务重构:技术落地路径与系统化思考
java·大数据·人工智能·重构·系统架构
微三云 - 廖会灵 (私域系统开发)6 天前
多端商城统一账号体系设计实践:小程序 / APP / H5 登录打通与账号合并
矩阵·重构·自动化·零售
微三云 - 廖会灵 (私域系统开发)8 天前
裂变营销系统架构设计:推三返一(三三循环)模式业务拆解、奖励算法与合规方案
重构·自动化·零售
江畔柳前堤8 天前
On-Policy Distillation 全景深潜
人工智能·网络协议·目标检测·http·机器学习·chatgpt·重构
液态不合群10 天前
低代码不是捷径,是企业数字化转型的底层重构
低代码·重构
Alinket10 天前
当 AI 走进传感器:嵌入式人工智能如何重构设备智能
人工智能·物联网·重构·健康医疗·无线通信·智能硬件·iot