重构代码之内联方法

embedded/2024/11/13 23:13:52/

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

一、适用场景

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

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

二、重构步骤

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

三、示例代码

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

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.ppmy.cn/embedded/137344.html

相关文章

写给初学者的React Native 全栈开发实战班

React Native 全栈开发实战班 亲爱的同学们: 很高兴在这里与大家相聚!我是你们的讲师,将带领大家一起踏上 React Native 移动开发的学习之旅。 为什么选择 React Native? 在这个移动互联网时代,App 开发工程师已经…

探索微服务中的权限控制:一次线上问题排查的思考

在这篇博客中,我将分享一个近期在排查线上问题时,意外发现的权限控制实现方式。起初,这个问题让我迷惑不已,因为在前端请求中,有个权限控制参数为 null,但在请求从网关进入微服务后,该参数神秘地…

aws(学习笔记第十二课) 使用AWS的RDS-MySQL

aws(学习笔记第十二课) 使用AWS的RDS 学习内容: AWS的RDS-MySQL 1. 使用AWS的RDS 什么是RDS RDS就是Relation Database Service的缩写,是AWS提供的托管关系型数据库系统。让用户能够在 AWS Cloud 云中更轻松地设置、操作和扩展关系数据库。 数据库和we…

软件设计课程笔记

11.11就做了这两件事情 写在前面11.11课程总结(1)将开发板与pc机连接到同一个局域网(2)NFS共享文件设置 写在前面 “好记性不如烂笔头”。记性太差,总结来救。水平太差,那没办法。这是写给自己的课程笔记&…

RoseTTAFold MSA_emb类解读

MSA_emb 类的作用是对多序列对齐(MSA)数据进行嵌入编码,同时添加位置编码和查询编码(调用PositionalEncoding 和 QueryEncoding)以便为序列特征建模类。 源代码: class MSA_emb(nn.Module):def __init__(self, d_model=64, d_msa=21, p_drop=0.1, max_len=5000):super(…

Spring Boot编程训练系统:技术实现与案例分析

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常…

解决表格出现滚动条样式错乱问题

自定义表格出现滚动条时,会因为宽度不对等导致样式错乱; 解决思路: 监听表格数据的变化,当表格出现滚动条时,再调用更新宽度的方法updateWidth,去改变表格头部的宽度,最终保持表格头部和内容对…

方法论-2W1H提问法

概述 2W1H(What, Why, How)提问法是一种简洁而高效的分析工具,通过明确回答三个核心问题:“What(是什么)”、“Why(为什么)”和“How(如何做)”,…