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

news/2024/11/13 21:44:53/

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

一、示例

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

public void SetDiscount(bool isStudent)
{if (isStudent){// 学生折扣逻辑}else{// 非学生折扣逻辑}
}

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

二、重构后的代码

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

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

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

// 清晰地显示不同折扣类型
ApplyStudentDiscount();
ApplyStandardDiscount();

三、适用场景

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

四、优缺点

优点:

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

缺点:

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

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


http://www.ppmy.cn/news/1546759.html

相关文章

设计模式-七个基本原则之一-单一职责原则 + SpringBoot案例

单一职责原理:(SRP) 面向对象七个基本原则之一 清晰的职责:每个类应该有一个明确的职责,避免将多个责任混合在一起。降低耦合:通过将不同的职责分开,可以降低类之间的耦合度,提高系统的灵活性。易于维护:当…

Oracle 高水位线和低-高水位线(High Water Mark Low High Water Mark)

在Oracle的逻辑存储结构中(表空间-段-区-块),数据是存在数据段中的,通常一个表就是一个数据段,而段最终又由许多数据块组成。当数据存入数据块时,需要对块进行格式化,高水位线(High …

【AI日报】2024年11月13号

我回来啦!!发现自己好久不发文章了。 在某头部AI公众号实习的过程中,学到太多太多了,也感谢某位大神的指点,也衷心祝愿他的IP可以越做越好 之后因为时间关系,可能要自己出来单干了。 在实习过程中学到的…

大数据相关技术的基本概念?

一、Hadoop Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop实现了一个分布式文件系统(Distributed File System)&#xff0…

Go语言 HTTP 服务模糊测试教程

写在前面: 此博客内容已经同步到我的博客网站,如需要获得更优的阅读体验请前往https://blog.mainjay.cloudns.ch/blog/go/fuzzing-test 作为开发人员,我们并不总能预见到程序或函数可能接收到的所有可能输入。 即使我们可以定义主要的边界情…

基本和引用数据类型以及对象字面量(day14)

一、基本和引用数据类型 1. 基本数据类型 String Number Boolean Null Undefined 引用数据类型 Object 2. JS中的变量都是保存到栈内存中 基本数据类型的值直接在栈内存中存储, 值与值之间时独立存在,修改一个变量不会影响其他变量 3. 对象&#xff…

应用于新能源汽车NCV4275CDT50RKG车规级LDO线性电压调节器芯片

关于车规级芯片(Automotive Grade Chip),车规级芯片是专门用于汽车行业的芯片,具有高可靠性、高稳定性和低功耗等特点,以满足汽车电子系统的严格要求。这些芯片通常用于车载电子控制单元(ECU)和…

FluentUI使用

首先向Qt Qml FluentUI组件库的作者zhuzichu520致敬! 一、源码下载地址: 1)GitHub - zhuzichu520/FluentUI: FluentUI for QML 2)GitCode - 全球开发者的开源社区,开源代码托管平台 二、Qt6下载地址: qt-online-i…