代码重构:霰弹式修改
什么是“霰弹式修改”
-
定义:霰弹式修改:指的是如果每遇到某种变化,你都必须在许多不同的类内做出许多小修改。此时,你所面临的坏味道就是霰弹式修改
-
影响:需要修改的代码散布四处,你不但很难找到它们,也很容易错过某个重要的修改。任何修改遗漏都会导致异常结果
-
改进目标:更好的代码组织;更少的代码重复;更易维护
-
方法:搬移函数、搬移字段、函数组合成类、函数组合成变换、拆分阶段、内联函数、内联类
“霰弹式修改”有哪些表现,如何重构
-
案例背景:某跨国公司员工的薪资管理
“霰弹式修改”有哪些表现
-
场景一:增加一个币种
-
1.Currency中增加一种货币类型;
-
2.修改SupportedCurrencyChecker类中SUPPORTED_CURRENCY属性;
-
3.RateService中汇率相关转换方法适配新增货币类型;
-
4.SalaryService中汇率相关转换方法适配新增货币类型
-
增加币种这种变化我们需要在4个类中分别进行适配
-
场景二:货币汇率变化
-
1.RateService中汇率分别修改方法queryAllRatesToCny及exchangeRateToCny方法中各币种对应的汇率值
-
2.SalaryService中修改exchangeRateToCny方法中各币种对应的汇率值
-
汇率变化时我们需要在2个类中分别进行适配
“霰弹式修改”如何重构?——搬移字段
重构方法:
-
1.搬移字段
-
2.搬移方法
-
3.内联类
“霰弹式修改”如何重构?——拆分阶段
重构方法:拆分阶段
-
一段代码在同时处理两件或两件以上不同的事,可以把它拆分成各自独立的模块,因为这样到了需要修改的时候,就可以单独处理每个主题,而不必同时在脑子里考虑两个不同的主题
“霰弹式修改”如何重构?——函数组合变换
重构方法:函数组合变换
-
把函数组合起来的原因之一,是为了避免计算派生数据的逻辑到处重复(把所有计算派生数据的逻辑收拢到一处,这样始终可以在固定的地方找到和更新这些逻辑,避免到处重复)
总结
- 点赞
- 收藏
- 关注作者
评论(0)