美文网首页
断言式编程

断言式编程

作者: ampire_dan | 来源:发表于2019-06-29 17:29 被阅读0次

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

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

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

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

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

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

相关文章

  • 断言式编程

    最近听同事分享了解到一个专业词汇,断言式编程或者有些人说是防御式编程。 这个思想就是,程序中会有很多种状态,有些状...

  • C++11笔记:静态断言

    断言(assert) 断言(assert)是一种编程中常用的手段。断言就是将一个返回值总需要为真的判别式放在语句中...

  • 防御式编程:理解断言

    在防御式驾驶中要建立这样一种思维,那就是你永远也不能确定另一位司机将要做什么。这样才能确保在其他人做出危险动作时你...

  • Commons Collections函数编程

    函数编程之Predicate(断言) 可以当作是封装条件或判别式 if...else的替代 常用类: 相等判断 n...

  • 一些开发规范

    编程规范 防御式编程,根据有限枚举先处理断言,再处理错误,最后处理正常逻辑,正常逻辑外尽可能多的处理异常分支;开发...

  • Swift断言->SIL__ver.垃圾箱

    Swift断言 Swift提供了assert,precondition, fatalError三种断言方法。编程时...

  • 防御式编程-学会使用断言

    在开发过程中免不了一些 bug 的出现,例如后台传输的一个值为 NSNumber 的类型,但是你在前段用一个...

  • 2017.12.01学习总结

    今天学习了断言,断言是编程术语,表示为一些布尔表达式,可以在任何时候启用和禁用断言验证,因此可以在测试时启用断言...

  • 声明式编程与命令式编程区别

    声明式编程 与 命令式编程: 命令式编程:描述计算机所做行为的编程规范 声明式编程:响应式编程属于声明式编程的一种...

  • RxSwift初探(1)

    一、前提:函数响应式编程思想 简单来说 函数响应式编程 = 函数式编程 + 响应式编程 (1)函数式 函数式编程是...

网友评论

      本文标题:断言式编程

      本文链接:https://www.haomeiwen.com/subject/uanecctx.html