代码重构:临时字段(Temporary Field) 您所在的位置:网站首页 Temporary属性 代码重构:临时字段(Temporary Field)

代码重构:临时字段(Temporary Field)

2024-07-17 19:06| 来源: 网络整理| 查看: 265

什么是临时字段(Temporary Field) 定义:某个实例变量仅为代码中一小部分功能临时所用而创建 影响:通常一个对象会需要它的全部的变量。当一个变量看上去没什么用,却要试图了解他为什么在哪里时,会使类的作用变得更难理解,影响了代码的可读性和可维护性 改进目标:消除临时字段,提升代码可读性、可维护性 方法:提取类;引入特例 案例1

代码背景

Account为用户账户类,包含用户名、卡号、余额等信息,以及一些未列举出来的账户信息 日常消费中会频繁调用addToBalance、deductBalance、以及其他一些未列举的账户信息处理方法,更新账户信息 每半年会调用evaluateAccount和evaluateConsumptionLevel方法,对账户进行一次评估

症状/问题

name、cardId、balance以及一些未列举的账户信息字段,在账户对象创建后,频繁会被使用。与对象绑定在一起,属于Account中的正常字段。 maxAsset、usageFrequency、overdueTimes,每半年才被赋值并使用一次。账户对象创建后,多数情况下是空值,毫无用处,属于临时字段

image-20220429192945993.png

改进路线

image-20220429193018513.png

案例2

代码背景

RoutingHandler对消息进行路由处理,即我们关注的核心类 Message为消息体 路由的目标对象,通过工厂RouterFactory进行创建 RouterFactory创建Router接口的实例,即具体的路由对象

症状/问题

在handle方法中,我们需要反复对msg.getPriority()是否为空进行判断,priority为空是一种特例,对空的处理少数情况下的处理逻辑,也可归属于临时字段范畴

image-20220429193156804.png

改进路线

image-20220429193227221.png

问题:在handle方法中,我们需要反复对msg.getPriority()是否为空进行判断,priority为空是一种特例,对空的处理少数情况下的处理逻辑,也可归属于临时字段范畴

解决方案:我们可以使用“引入特例”的方法,为Router加入一个新的实现类,用来专门处理这种少见的逻辑。此时便可将这种“临时的处理”搬移到类外面去

重构对比

image-20220429193345921.png

总结

image-20220429193405446.png



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有