简洁代码之道:用多态替代条件语句及避免全局可变状态

前言

本文是我看了 谷歌简洁代码演讲系列 中的 多态和条件语句 的总结。大部分的条件语句是可以用多态代替的,本文将围绕以下问题开展:

  • 为什么要用多态替代条件语句
  • 多态和条件语句的使用场景
  • 如何用多态代替条件语句
  • 在哪里决定要创建什么子类
  • 什么情况下使用多态

为什么要用多态替代条件语句

  • 没有 if 语句的函数更容易阅读。
  • 没有 if 语句的函数更容易测试。
  • 多态的系统更容易维护。

多态和条件语句的使用场景

使用多态的场景

  • 当对象要根据不同的状态表现不同的行为时。
  • 当你需要在很多地方检查相同的条件时。

使用条件语句的场景

  • 主要用于原始对象的比较:<,>,==,!=。
  • 其他

这篇文章主要着重于如何避免 if 语句。

如何避免使用 if 语句

  • 不要返回 null,而是返回一个空的对象,例如说空的链表。
  • 不要返回错误码,而是直接在运行时抛出异常。

如何用多态代替条件语句

如果你有一个条件语句,它根据对象的类型选择不同的行为。那么如何用多态来替代它呢?下面,我们来看一个例子。

条件语句实现的类

Class Update {
    execute() {
        if (FLAG_i18n_ENABLE) {
            //DO A;
        } else {
            //DO B;
        }
    }
    render() {
        if (FLAG_i18n_ENABLE) {
            //render A;
        } else {
            //render B;
        }
    }
}

上面的类根据 FLAG_i18n_ENABLE 来执行不同的操作。可能你以前就是这么写代码的,觉得这样写一点问题都没有。那么,我现在问你,怎么测试上面的类?

下面我们来看看一般的测试方法。

void testExecuteDoA() {
    
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值