用多态取代条件表达式

描述 

如果有一个条件表达式,根据对象类型的不同而选择不同的行为 可以将这个条件表达式的每个分支放进一个子类内的覆写函数中,然后将原始函数声明为抽象函数 

double getSpeed(){
    switch (_type){
        case EURAPEAN:
                return getBaseSpeed();
        case AFRICAN:
                return getBaseSpeed() - getLoadFactor() * _numberOfCocounts;
        case NORWEGION_BLUE:
                return (_isNailed) ? 0 : getBasedSpeed(_voltage);
    }
}
复制代码



动机

如果需要根据对象的不同类型而采取不同的行为,多态使我们可以不用编写明显的条件表达式

正因为有了多态:“类型码的switch语句” 以及“ 基于类型名称的if-else” 语句 在面向对象中很少出现。


重构是软件开发中一项至关重要的技能,它的核心在于改善已有代码的内部结构,而不改变其外在行为。重构的过程可以提高代码的可读性、可维护性以及可扩展性,从而降低软件的长期维护成本和风险。在《重构:改善既有代码设计》一书中,Martin Fowler深入探讨了重构的实践方法,提出了一系列重构模式,这些模式对提高代码质量有着直接的影响。 参考资源链接:[马丁·福勒重构PDF:改善既有代码设计中文版](https://wenku.youkuaiyun.com/doc/70ebo7e7ok?spm=1055.2569.3001.10343) 具体来说,重构过程通常涉及以下几个常见模式:提取函数(Extract Method)、提取类(Extract Class)、内联函数(Inline Method)、内联类(Inline Class)、替换类型代码(Replace Type Code with Class)、以多态取代条件表达式(Replace Conditional with Polymorphism)等。这些模式的共同目标是简化复杂代码,消除重复,并清晰地表达设计意图。 以提取函数为例,当代码中某个复杂的表达式或者一长串操作需要被多次使用时,我们可以将其提取为一个单独的函数,并给这个函数一个清晰的名字,从而提高代码的可读性和可重用性。提取函数的步骤通常包括:创建一个新函数,把原表达式或操作复制到新函数中,调整原代码,使其调用新函数,最后进行测试确保功能不变。 再比如,替换类型代码模式是处理一系列基于类型的操作,可以通过创建一个继承体系,使用多态来代替条件表达式。这样不仅使得代码更加清晰,也使得添加新的类型变得更加容易。 通过这些具体的重构模式和步骤,开发者可以逐步地改进代码,最终达到提高整体软件质量的目的。《重构:改善既有代码设计》提供了全面的指导,帮助开发者理解和应用这些模式,从而在实际工作中实现软件质量的持续提升。 参考资源链接:[马丁·福勒重构PDF:改善既有代码设计中文版](https://wenku.youkuaiyun.com/doc/70ebo7e7ok?spm=1055.2569.3001.10343)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值