代码重构:临时字段(Temporary Field) | 您所在的位置:网站首页 › Temporary属性 › 代码重构:临时字段(Temporary Field) |
什么是临时字段(Temporary Field)
定义:某个实例变量仅为代码中一小部分功能临时所用而创建
影响:通常一个对象会需要它的全部的变量。当一个变量看上去没什么用,却要试图了解他为什么在哪里时,会使类的作用变得更难理解,影响了代码的可读性和可维护性
改进目标:消除临时字段,提升代码可读性、可维护性
方法:提取类;引入特例
案例1
代码背景 Account为用户账户类,包含用户名、卡号、余额等信息,以及一些未列举出来的账户信息 日常消费中会频繁调用addToBalance、deductBalance、以及其他一些未列举的账户信息处理方法,更新账户信息 每半年会调用evaluateAccount和evaluateConsumptionLevel方法,对账户进行一次评估症状/问题 name、cardId、balance以及一些未列举的账户信息字段,在账户对象创建后,频繁会被使用。与对象绑定在一起,属于Account中的正常字段。 maxAsset、usageFrequency、overdueTimes,每半年才被赋值并使用一次。账户对象创建后,多数情况下是空值,毫无用处,属于临时字段代码背景 RoutingHandler对消息进行路由处理,即我们关注的核心类 Message为消息体 路由的目标对象,通过工厂RouterFactory进行创建 RouterFactory创建Router接口的实例,即具体的路由对象症状/问题 在handle方法中,我们需要反复对msg.getPriority()是否为空进行判断,priority为空是一种特例,对空的处理少数情况下的处理逻辑,也可归属于临时字段范畴问题:在handle方法中,我们需要反复对msg.getPriority()是否为空进行判断,priority为空是一种特例,对空的处理少数情况下的处理逻辑,也可归属于临时字段范畴 解决方案:我们可以使用“引入特例”的方法,为Router加入一个新的实现类,用来专门处理这种少见的逻辑。此时便可将这种“临时的处理”搬移到类外面去 重构对比 |
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |