断言式编程

最近听同事分享了解到一个专业词汇,断言式编程或者有些人说是防御式编程。

这个思想就是,程序中会有很多种状态,有些状态的组合是绝对不可能出现的,但是抛开上下文单纯从这段代码来看,还是有可能会发生的,这种情况下可以使用断言(assert),表示这种状态是绝对不可能的,如果发生了,请将程序 kill。

这个概念在刚接触编程的时候我内心是无感的,为什么 kill 掉程序,这样用户体验不是不好吗(当然断言可以在 release 模式下不起作用)?但其实编程久了,我发现程序就是关于处理状态的,当状态多的时候,维护和继续开发就会很困难。而一种避免维护太多状态的“偷懒”方式就是使用断言,表示某些状态组合是绝对不可能存在的。

好处就是在开发阶段如果程序挂在一个断言处了,由于这种状态我们预期是绝对不可能出现的,说明我们的预期不对,或者代码哪里有问题,并能在开发阶段解决掉。

当然坏处也是有的,想象一下我们写的代码中到处是断言,一看就会很不舒服,断言太多意味着,或许这些地方需要更好的设计模式,也有可能我们对状态的定义出了问题。

最后,如果你在开发中很少使用断言的话,可以尝试一下。这会让你的代码运行的更加平稳。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 防御式编程 在防御式驾驶中要建立这样一种思维,那就是你永远也不能确定另一位司机将要做什么。这样才能够确保在其他人做...
    刘硕jessie阅读 5,444评论 1 49
  • 第一部分 打好基础 Laying the Foundation 第一章 欢迎进入软件构建的世界 Welcome t...
    白桦叶阅读 4,673评论 0 17
  • 今天,儿子学校又开家长了会了。吃过饭之后,先生就出发了。到了4:00多钟才回来,告诉我一些情况。有好消息,老师点名...
    苇絮轻扬阅读 154评论 2 2
  • 创建临时消息ActiveMQ通过createTemporaryQueue和createTemporaryTopic...
    Airycode阅读 222评论 0 0
  • 别看 用你强词夺理的悲伤撤销恶语伤人的谎言 因为你在身旁 天晴了阴雨 熨染了旧事 向着你的风格逼近混世的潮汐 你说...
    悲伤的小鸭子阅读 232评论 0 0