一个小技巧助您减少if语句的状态判断

作者:依乐祝
首发地址:https://www.cnblogs.com/yilezhu/p/14174990.html

在进行项目的开发的过程中, if 语句是少不了的,但我们始终要有一颗消灭 if / else 语句的心。为了消灭if / else 我们引入了 短路器 的概念。 短路器 有时候的确能精简我们的代码,但还不够,因此我参考了一个方法来继续消灭一部分 断路器 中的 if 语句。接下来就让我们拿一段事例代码来一步一步的演示下吧。
如下一段比较典型if 断路器 代码:

if (someConditionIsMet)
{
   throw new SomeSpecificException("message");
}
//someConditionMetCode

这里代码虽然没什么问题,但是我个人还是不喜欢用 if 的语句声明。我更喜欢的是:

Assert.That(someConditionIsMet, "message");

但是这样子的话我们就无法指定 Exception 的类型了,因此我们可能需要的是下面这样子的:

Assert.That<MyException>(someConditionIsMet, "message");

但是基类Exception虽然具有无参数的构造函数,但是在创建异常之后,不允许我再给 Message 进行赋值了。因为,Message是Exception 类中的只读属性。

public virtual string Message { get; }

我的解决方案是使用Activator.CreateInstance并传入要实例化的特定异常类型以及异常消息。如下代码所示:

public static class Assert
{
  public static void That<T>(bool condition, string msg) where T : Exception, new()
  {
    if (condition)
    {
      var ex = Activator.CreateInstance(typeof(T), new object[] { msg }) as T;
      throw ex;
    }
  }
}

至此,结束。开头的那段代码就可以通过变通的方式把 if 语句给移除了,显得代码更精简,你觉得呢?当然,如果你有更好的处理方式也可以留言告诉我。
参考自:https://www.codeproject.com/Tips/5289739/Assert-with-assertion

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值