专栏首页依乐祝一个小技巧助您减少if语句的状态判断

一个小技巧助您减少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 条评论
登录 后参与评论

相关文章

  • C#中烦人的Null值判断竟然这样就被消灭了

    Null值检查应该算是开发中最常见且烦人的工作了吧,有人反对吗?反对的话请右上角关门不送。这篇文章就教大家一招来简化这个烦人又不可避免的工作。 罗嗦话不多说,...

    依乐祝
  • 【译】JavaScript 中写好条件语句的五个技巧

    乍一看,上面的例子看起来还可以哦。但是,如果添加更多的红色的水果,比如cherry和cranberries,那会怎样呢?你会使用更多的||来扩展条件语句吗?

    嘉明
  • 免杀技巧 | PHP免杀木马绕过某盾

    对于网站木马总重要的就是隐匿性和免杀.在说免杀之前,我想先说说有关于隐匿性的两个小细节.

    HACK学习
  • 实用编程技巧汇总,让代码效率提高一个档次

    二者唯一的不同在于后者用len变量将字符串s的长度保存了,在条件判断时直接将i与len比较。

    老九君
  • [Python从零到壹] 二.语法基础之条件语句、循环语句和函数

    欢迎大家来到“Python从零到壹”,在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界。所有文章都将结合案例...

    Eastmount
  • 被 GANs 虐千百遍后,我总结出来的 10 条训练经验

    原标题 | 10 Lessons I Learned Training GANs for one Year

    AI科技评论
  • 代码中大量的if/else,你有什么优化方案?

    当代码已经复杂到难以维护的程度之后,只能狠下心重构优化。那,有什么方案可以优雅的优化掉这些多余的if/else?

    Spark学习技巧
  • Android 应用构建速度提升的十个小技巧

    应用的构建速度会直接影响开发效率,本文将带您通过改造一个 Android 应用: “Google 追踪圣诞老人 (Google Santa Tracker)” ...

    Android 开发者
  • Android 应用构建速度提升的十个小技巧

    应用的构建速度会直接影响开发效率,本文将带您通过改造一个 Android 应用: “Google 追踪圣诞老人 (Google Santa Tracker)” ...

    用户1907613

作者介绍

依乐祝

安徽容知日新科技股份有限公司高级软件开发工程师

安徽容知日新科技股份有限公司 · 高级软件开发工程师 (已认证)

专栏

精选专题

活动推荐

扫码关注云+社区

领取腾讯云代金券