重构长方法之方法调用替换临时变量

方法调用替换临时变量(Replace Temp with Query) 在代码重构中用的偏少,它将临时变量替换成方法,这样的代码更简洁、可读性更高。我们来一起看看如何重构。

一、具体过程

通常在代码中,我们会看到类似这样的情况:

double basePrice = quantity * itemPrice;
if (basePrice > 1000) {// More Code
}

代码中 basePrice 是一个临时变量,用于保存一个中间值。在方法调用替换临时变量方式的重构中,我们要移除临时变量,使用方法调用来完成计算过程。根据规则,重构后的代码会是:

if (CalculateBasePrice() > 1000) {// More Code
}double CalculateBasePrice() {return quantity * itemPrice;
}

二、优点和缺点

2.1 优点
  1. 增强可读性:将计算逻辑封装到方法中可以提高代码的可读性,开发者可以直接通过方法名理解它的用途,而不必去分析临时变量的定义。
  2. 减少重复:如果临时变量在代码的多个地方被使用,通过方法调用可以避免重复的计算逻辑。
  3. 易于维护:将逻辑封装到方法中使得以后修改或扩展计算逻辑变得更容易。
2.3 缺点
  1. 性能开销:如果原本的临时变量保存的是一个昂贵的计算结果,而重构后每次都通过方法调用重新计算,可能会导致性能下降。临时变量在这种情况下可以避免重复计算,而方法调用会多次执行相同的计算。尤其是在循环或高频调用的场景下,性能影响可能更加明显。
  2. 可读性过度优化:虽然将复杂逻辑抽象到方法中可以提高可读性,但如果每一个小的计算都封装成方法,反而可能会导致方法过多,代码变得零碎,使得整体结构变得复杂,难以追踪调用链。如果方法名不够直观或清晰,开发人员可能需要跳转到方法定义去理解具体的计算逻辑,反而增加了理解的难度。
  3. 方法滥用:如果将每一个临时变量都替换为方法调用,可能会引发过度的封装,导致类中的方法数量过多,代码复杂性增加。此外,类可能承担过多职责,违背单一职责原则
  4. 调试难度增加:临时变量可以方便地用于调试,我们可以在调试过程中查看变量的值。如果将临时变量替换为方法,调试时可能需要跳入方法内部查看返回值,增加了调试的复杂性。
  5. 缺乏上下文信息:临时变量有时能提供重要的上下文信息,比如在一个较长的方法中,临时变量名可以帮助理解某些中间状态或逻辑。而直接用方法替换,可能失去这种对当前上下文的提示作用。

三、适用场景

  • 临时变量的赋值是复杂表达式。
  • 临时变量被重复使用。
  • 代码可读性差,且难以理解变量的用途。

四、总结

方法调用替换临时变是代码重构中的一种技巧,其目标是通过将临时变量替换为方法调用,使代码更加简洁和可读。具体做法是移除保存中间计算结果的临时变量,并使用方法来动态计算这些结果。这样可以减少重复代码,增强代码的维护性和可读性。然而,这种重构也有潜在的缺点,尤其是在性能敏感的场景下。每次方法调用都会重新计算,可能增加性能开销,尤其是在循环或高频调用中。此外,过度封装逻辑到方法中可能导致代码零碎化,增加调试难度和复杂性。因此,该技巧适用于复杂表达式或重复使用临时变量的场景,但在性能要求较高的情况下需谨慎使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1560622.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

解决 IntelliJ IDEA 运行时 “Command line is too long“ 问题

文章目录 文章标题:解决 IntelliJ IDEA 运行时 "Command line is too long" 问题简介问题描述解决方案代码示例代码示例1:使用JAR Manifest代码示例2:使用Classpath File代码示例3:优化项目依赖 结论进一步的资源 文章标…

【C++入门篇 - 1】:C++编程等演示环境介绍

文章目录 C编程等演示环境介绍VS2022的下载创建项目运行一个基本程序 Visual Studio中程序的调试方法普通的断点调试调试时查看内存中的内容调试中查看反汇编窗口 开启isual Studio 2019对C最新标准的编译支持 C编程等演示环境介绍 VS2022的下载 官网:VS下载官网 …

ProtoBuf 安装

一、ProtoBuf 在 window 下的安装 1.1、下载 ProtoBuf 编译器 下载地址:https://github.com/protocolbuffers/protobuf/releases 可以不⽤下载最新版本,具体的下载根据电脑情况选择。 下载之后将压缩包解压到本地⽬录下。解压后的⽂件内包含 bin、in…

利用网络流量分析仪进行网络故障排除:提升IT运维效率的关键工具

目录 一、什么是网络流量分析仪? 主要功能: 二、为什么网络流量分析仪在网络故障排除中如此重要? 三、实际案例:使用网络流量分析仪快速排查网络故障 案例一:流量拥塞导致的带宽不足 案例二:服务器响…

【Kubernets】容器网络基础二:通讲CNI(Container Network Interface)容器网络接口实现方案

文章目录 背景知识Underlay网络Overlay网络一、基本概念二、工作原理三、实现方案四、应用场景 两者对比示意图 CNI实现有哪些?FlannelFlannel 的工作原理Flannel 的主要组件数据传输机制总结 Calico一、架构基础二、核心组件与功能三、路由与数据包转发四、安全策略…

精华版80页PPT | 智能工厂数字化顶层架构

项目背景及需求理解 随着科技的飞速发展,智能工厂的概念逐渐从理论走向实践,成为制造业转型升级的重要方向。方案对智能工厂数字化顶层架构进行全面介绍。在当前的市场环境下,消费者需求日益多样化、个性化,对产品质量、价格、环…

PMP--冲刺题--解题--121-130

文章目录 9.资源管理--1.规划资源管理--可以直接使用排除法,A和C的做法都是逃避了组织和参与这个会议,D组织多次会议的做法明显不够高效。121、 [单选] 项目经理被指派与技术和运营团队一起负责现有产品新版本的设计。项目经理组织一次联合需求会议&…

【拥抱AIGC】应该如何衡量AI辅助编程带来的收益

本文主要介绍了如何度量研发效能,以及AI辅助编程是如何影响效能的,进而阐述如何衡量AI辅助编程带来的收益。 理解度量:有效区分度量指标 为了帮助研发团队更好地理解和度量研发效能,可以将指标分为三类:能力和行为指…

【C++入门篇 - 3】:从C到C++第二篇

文章目录 从C到C第二篇new和delete命名空间命名空间的访问 cin和coutstring的基本使用 从C到C第二篇 new和delete 在C中用来向系统申请堆区的内存空间 New的作用相当于C语言中的malloc Delete的作用相当于C语言中的free 注意:在C语言中,如果内存不够…

【数学分析笔记】第5章第1节 微分中值定理(1)

5. 微分中值定理及其应用 5.1 微分中值定理 5.1.1 极值与极值点 【定义5.1.1】 f ( x ) f(x) f(x)定义域为 ( a , b ) (a,b) (a,b), x 0 ∈ ( a , b ) x_0\in(a,b) x0​∈(a,b),若 ∃ O ( x 0 , ρ ) ⊂ ( a , b ) \exists O(x_0,\rho)\subset(a,b) ∃…

web基础-攻防世界

get-post 一、WP (题目本质:get与post传参方法) 用 GET 给后端传参的方法是:在?后跟变量名字,不同的变量之间用&隔开。例如,在 url 后添加/?a1 即可发送 get 请求。 利用 hackbar 进行…

岩石分类检测数据集 4700张 岩石检测 带标注 voc yolo 9类

岩石分类检测数据集 4700张 岩石检测 带标注 voc yolo 9类 岩石分类检测数据集 (Rock Classification and Detection Dataset) 描述: 本数据集旨在支持对不同类型的岩石进行自动分类和检测,特别适用于地质勘探、矿物识别、环境监测等领域。通过使用该数据集训练的模…

Python画图|多图共享X轴和Y轴

【1】引言 在python画图的众多场景中,存在多图对应X轴和Y轴可能一致的情形。 为此,尝试找到相关方法,不仅可以将代码写得更简洁,也更节省电脑内存,是提升工作效率的可选之路。 【2】官网教程 点击下方链接&#xf…

制造已然走出国门,数据如何走向全球?

1 行业趋势和背景 1.1 海外全球化——由中国制造到中国品牌全球造的全球化布局 为实现资源的最优配置、效率的最大化,现在越来越多的制造业企业,凭借着自己的品牌力和技术能力,进行全球化布局,加速从原来的“中国制造”到“中国…

EISS_2024企业信息安全峰会:《货拉拉信息安全实践》学习笔记

EISS_2024企业信息安全峰会:《货拉拉信息安全实践》 企业安全目标设定和安全框架企业信息安全组织和机制技术体系建设方法信息安全指标建设构建安全数据和体系技术体系支撑合规治理安全融入企业体系内建文化,外建生态 企业安全目标设定和安全框架 要点&a…

门店展台客流量摄像机功能:准确计数、行为分析、客流趋势预测

在车展展厅中,门店展台客流量摄像机发挥着至关重要的作用,其功能涵盖准确计数、行为分析和客流趋势预测等多个方面。 一、车展展厅应用客流统计方案原因 1. 评估展会效果:准确了解每个展台的客流量,判断展会的吸引力和热度&#…

Linux相关概念和易错知识点(14)(进程终止、进程退出、退出信息)

1.进程终止 &#xff08;1&#xff09;错误码 对于程序常见错误信息&#xff0c;C/C提供了信息解释&#xff0c;保存在<string.h>&#xff0c;使用strerror(错误码)就可以查询 错误信息成立的前提是错误码要和错误信息匹配&#xff0c;我们需要结合C/C给我们的错误码来…

极狐GitLab X 某轨道交通控制系统龙头企业,助力业务研发敏捷化

GitLab 是一个全球知名的一体化 DevOps 平台&#xff0c;很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门为中国程序员服务。可以一键式部署极狐GitLab。 学习极狐GitLab 的相关资料&#xff1a; 极狐GitLab 60天专业…

java多态-cnblog

java多态 细分的重载会增加代码量&#xff0c;降低易用程度 定义一个类&#xff0c;继承所有类的对象&#xff0c;根据向上转型可以让每个类的对象都调用初始类的方法&#xff0c;在方法中设置判断&#xff0c;不同的对象导致方法做不同的事&#xff0c;这就是多态 写一个灯…

计算机的错误计算(一百一十九)

摘要 用错数解释计算机的错误计算&#xff08;一百一十八&#xff09;中的错误计算。 计算机的错误计算&#xff08;一百一十八&#xff09;给出一个循环迭代 用C语言或Java编程计算&#xff0c;则 均是错误结果。 下面用错数解释其出错原因。 首先&#xff0c;将迭代看作 …