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

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

一、示例

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

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

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

二、重构后的代码

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

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

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

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

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

三、适用场景

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

四、优缺点

优点:

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

缺点:

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

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

相关推荐
FII工业富联科技服务15 小时前
从灯塔工厂到AI Factory新模式:AI正在重构制造业的四大核心能力
大数据·运维·人工智能·重构·ar·制造
链上日记1 天前
WEEX Labs 周度观察:AI 基础设施的“权力重构”与实体经济的“深潜运动”
人工智能·重构
MDM.Plus2 天前
从“遥控”到“自治”:苹果 MDM 技术的代际跨越与业务重构
ios·智能手机·重构·mdm
重庆传粉科技2 天前
企业知识图谱建设与信任资产重构,AI搜索优化(GEO)实战指南
人工智能·重构·知识图谱
丁劲犇2 天前
Trae的十二时辰-驱动GLM5.2用AI重构Python版飞鸽传书(iptux)
开发语言·人工智能·python·重构·trae·glm-5.2
水豚老师2 天前
基于会话变量与行快照的跨数据库双向增量同步系统设计与实现 - TriggerAsyn v2:从状态机防循环到事件溯源回放的全面重构
重构·触发器·状态机·异构数据库·多数据库同步
阿标在干嘛3 天前
从单机到分布式:政策快报爬虫系统的三次重构
分布式·爬虫·重构
lauo3 天前
掌心核爆:iQOO首款小平板搭载2nm骁龙8E6,开启AI原生计算的移动终端新纪元
前端·人工智能·智能手机·重构·电脑·ai-native
m0_466525296 天前
四大维度深层重构,解锁软件产业智能化变革新路径
重构
观远数据6 天前
BI选型评估维度重构:为什么‘让业务用起来‘应该占权重的40%
重构