重构代码之内联方法

在代码重构中,内联方法主要用于处理那些没有足够独立意义的方法。它的核心思想是将方法的实现直接放到调用它的地方,从而减少不必要的抽象和函数调用。以下是具体的介绍:

一、适用场景

内联方法适用于以下场景:

  • 方法内容过于简单:方法只有一两行代码,或其功能简单到没有存在的必要,比如只是对其他方法的简单封装。
  • 方法名和内容不匹配:方法名无法清晰地表达其功能,导致代码阅读时产生困惑。
  • 过度拆分:某些方法将简单的功能过度拆分,导致阅读和理解困难,增加了调用栈的深度。

二、重构步骤

  • 确定方法是否可以内联:判断方法是否足够简单,并确保在所有调用点处直接替换代码不会影响代码逻辑。
  • 检查方法的访问权限:如果是私有方法,重构影响会小些。对于公共方法,则需要更加慎重,因为这可能会影响外部依赖。
  • 替换方法调用:将方法的代码直接复制到调用它的地方。
  • 删除原方法:在所有调用点替换完后,删除原方法定义。

三、示例代码

假设有一个简单的类,用于计算商品折扣:

public class Product
{private decimal price;public Product(decimal price){this.price = price;}public decimal GetDiscountedPrice(){return price * GetDiscountRate();}private decimal GetDiscountRate(){return 0.9m;}
}

在这里,GetDiscountRate()方法只是简单地返回一个固定值0.9,可以将其内联到GetDiscountedPrice()方法中:

public class Product
{private decimal price;public Product(decimal price){this.price = price;}public decimal GetDiscountedPrice(){return price * 0.9m;}
}

四、重构后的优点

  • 减少冗余:消除了不必要的抽象,减少了方法调用的层次。
  • 代码更清晰:直接将核心逻辑展现出来,使代码更加简洁、易读。
  • 提升性能:在某些情况下,减少方法调用可以提升性能,尽管这个提升通常很小。

五、注意事项

  • 保持方法简洁:若方法逻辑复杂或调用多处,请谨慎使用内联方法。
  • 确保正确性:在删除方法前,确认代码的行为一致,避免引入错误。

通过内联方法可以有效地消除不必要的抽象,使代码更加清晰,尤其适用于简单的计算、获取属性值等方法。

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

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

相关文章

2024 微信支付公钥 JAVA完整代码参考

需要用到的链接: 微信支付公钥使用介绍 - 平台证书 | 微信支付商户文档中心 GitHub - wechatpay-apiv3/wechatpay-java: 微信支付 APIv3 的官方 Java Library 谨记 如果有疑问 多看几遍 wechatpay-java的readme 和 example 创建预支付 Overridepublic ResultBean&…

CondaError: Run ‘conda init‘ before ‘conda activate‘解决办法

已经执行了conda init,但是还是会报错CondaError: Run ‘conda init’ before ‘conda activate’ 原因:权限不够 解决办法:以管理员身份运行cmd,然后进入要操作的文件夹下,重新执行 conda init 和 conda activate 就可…

边缘计算与推理算力:智能时代的加速引擎

在数据量爆炸性增长的今天,边缘计算与推理算力正成为推动智能应用的关键力量。智能家居、自动驾驶、工业4.0等领域正在逐步从传统的云端计算转向边缘计算,而推理算力的加入,为边缘计算提供了更强的数据处理能力和实时决策能力。本文将探讨边缘…

【Python TensorFlow】进阶指南(续篇二)

在前面的文章中,我们详细探讨了TensorFlow在实际应用中的高级功能和技术细节。本篇将继续深入探讨一些前沿话题,包括但不限于分布式训练、混合精度训练、神经架构搜索(NAS)、模型微调以及在实际项目中的最佳实践等,帮助…

JAVA后端生成图片滑块验证码 springboot+js完整案例

前言 现在大部分网部都是图片滑块验证码,这个得要与后端联动起来才是确保接口安全性 通过我们系统在发送手机短息时都会选进行滑块验证,但是我们要保证发送短息接口的全安,具体路思如下 那么这个滑块的必须是与后端交互才能保证安全性&…

机器学习—高级优化方法

梯度下降是机器学习中广泛应用的优化算法,像线性回归和逻辑回归以及神经网络的早期实现,现在有一些其他的优化算法,为了最小化成本函数,甚至比梯度下降的效果更好,这种算法可以用来帮助训练神经网络,比梯度…

【Vue3】知识汇总,附详细定义和源码详解,后续出微信小程序项目(3)

快速跳转: 我的个人博客主页👉:Reuuse博客 新开专栏👉:Vue3专栏 参考文献👉:uniapp官网 免费图标👉:阿里巴巴矢量图标库 ❀ 感谢支持!☀ 前情提要 &#x…

模型减肥秘籍:模型压缩技术 CNN基础

这里是Datawhale的组队学习活动,主要介绍的是模型压缩技术。后续将以CNN网络为基础点,带领大家领略模型压缩的魅力。首先是回顾一下一些关于CNN的基础知识。 参考链接: 模型减肥秘籍:模型压缩技术-课程详情 | Datawhale datawh…

Ollama的安装以及大模型下载教程

简介 Ollama是一个开源的大型语言模型服务工具,它帮助用户快速在本地运行大模型。通过简单的安装指令,用户可以执行一条命令就在本地运行开源大型语言模型, Ollama极大地简化了在Docker容器内部署和管理LLM的过程,使得用户能够快…

Mysql前言

文章目录 Mysql 数据库简介SQL 基础语法什么是 SQL语句SQL 的作用SQL 语句的分类SQL 通用语法查询状态 🏡作者主页:点击! 🤖Mysql专栏:点击! ⏰️创作时间:2024年11月12日18点20分 SQL是数据库…

Spring Boot编程训练系统:设计与实现要点

5系统详细实现 5.1 管理员模块的实现 5.1.1 用户信息管理 管理员对用户信息修改删除以及查询操作。具体界面的展示如图5.1所示。 图5.1 用户信息管理界面 5.1.2 题库资源管理 系统管理员可以对题库资源信息进行添加,修改,删除以及查询操作。具体界面如…

Xcode 16 使用 pod 命令报错解决方案

原文请点击这个跳转 一、问题现象: 有人会遇到 Xcode 升级到 16 后,新建应用然后使用 pod init 命令会报错如下: Stack Ruby : ruby 3.3.5 (2024-09-03 revision ef084cc8f4) [x86_64-darwin23]RubyGems : 3.5.22Host : macOS 15.0 (24A335…

hive中windows子句的使用

概述 1,windows子句是对窗口的结果做更细粒度的划分 2、windows子句中有两种方式 rows :按照相邻的几行进行开窗 range:按照某个值的范围进行开窗 使用方式 (rows | range) between (UNBOUNDED | [num]) PRECEDING AND ([num] PRECEDING…

Unet++改进24:添加DualConv||轻量级深度神经网络的双卷积核

本文内容:添加DualConv 目录 论文简介 1.步骤一 2.步骤二 3.步骤三 4.步骤四 论文简介 卷积神经网络(CNN)架构通常对内存和计算要求很高,这使得它们在硬件资源有限的嵌入式系统中不可行。 我们提出了双卷积核(DualConv)来构建轻量级深度神经网络。DualConv结合3 3和1…

【Vue3】知识汇总,附详细定义和源码详解,后续出微信小程序项目(4)

快速跳转: 我的个人博客主页👉:Reuuse博客 新开专栏👉:Vue3专栏 参考文献👉:uniapp官网 免费图标👉:阿里巴巴矢量图标库 ❀ 感谢支持!☀ 前情提要 &#x…

微信小程序_小程序视图与逻辑_day3

一、目标 A. 能够知道如何实现页面之间的导航跳转 B. 能够知道如何实现下拉刷新效果 C. 能够知道如何实现上拉加载更多效果 D. 能够知道小程序中常用的生命周期 二、目录 A. 页面导航 B. 页面事件 C. 生命周期 D. WXS脚本 E. 案例-本地生活(列表页面)…

springboot社团服务系统的设计与实现,计算机毕业设计项目源码316,计算机毕设程序(LW+开题报告、中期报告、任务书等全套方案)

摘 要 社会发展日新月异,用计算机应用实现数据管理功能已经算是很完善的了,但是随着移动互联网的到来,处理信息不再受制于地理位置的限制,处理信息及时高效,备受人们的喜爱。本次开发一套社团服务系统有管理员&#x…

Linux服务管理-kerberos

Kerberos 官网文档‘:Kerberos:网络身份验证协议 (mit.edu) 基本概念:Kerberos基本概念及原理汇总-腾讯云开发者社区-腾讯云 (tencent.com) kerberos概述 Kerberos是一种计算机网络认证协议,由麻省理工学院(MIT&#x…

区块链技术在游戏行业的应用

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 区块链技术在游戏行业的应用 区块链技术在游戏行业的应用 区块链技术在游戏行业的应用 引言 区块链技术概述 定义与原理 发展历程…

MooseFS (MFS) 分布式对象存储

一、MFS 优越特性 Free (GPL): 通用文件系统,开源免费。在线扩容: 体系架构具有极强的可伸缩性,支持在线扩容。部署简单。高可用性: 支持设置任意文件冗余(数据分区)程度,提供比RAID10更高的冗余级别,同时不会影响读写性能&#…