作者:朱金灿
来源:http://blog.csdn.net/clever101

在公司一个同事问我:"什么时候应该用assert?比如某个函数的输入参数为一个指针,要进行有效计算,该指针必须非空,我弹出一个警告对话框来提示对方不就行了吗?干吗要用assert?我想问的是什么时候用对话框提示用户,什么时候用assert?"

这是一个值得思考的问题。首先明确assert(这里我说的是C++环境下)是需要在调试状态下才能生效的,在发布版是失效的。调试生效的事实告诉我们的是assert的一个重要作用是帮助开发者调试程序定位错误的。作为开发者一个普遍事实是解决bug并不难,定位bug往往是最难的。这也是我倡导多使用assert的原因所在。再深想一层,我们作一个假想:假如assert在发布版上也能用,那么什么时候用assert,什么时候用提示对话框,原则是什么?我认为这里有一个用户层次的问题。程序其实一般有两类用户:未发布前的开发者和发布后的用户。作为开发者,我们假定他是懂断言的,但对于用户,我们却不能假定他懂断言。如果这个接口是面对开发者的,那么就应该用断言来限制输入参数;如果是面向用户的,那么就应用提示对话框,比如弹出一个对话框选择让用户选择一个输入文件,但用户还没选择文件就按"确定"按钮,这应该用对话框就是提示,而不应该断言(这里如果弹出断言对话框,他还不知道是怎么回事呢)。

关于什么时候用assert(断言)的思考相关推荐

  1. Python assert断言函数及用法

    Python assert断言函数及用法 Python assert 语句,又称断言语句,可以看做是功能缩小版的 if 语句,它用于判断某个表达式的值,如果值为真,则程序可以继续往下执行:反之,Pyt ...

  2. python assert 断言的作用

    python assert 断言句语格式及用法很简单.在没完善一个程序之前,我们不知道程序在哪里会出错,与其让它在运行最崩溃,不如在出现错误条件时就崩溃,这时候就需要assert断言的帮助.本文主要是 ...

  3. Python assert 断言

    assert断言语句用来声明某个条件是真的,其作用是测试一个条件(condition)是否成立,如果不成立,则抛出异常. assert一般用法: assert condition 如果conditio ...

  4. Python assert 断言函数

    使用assert断言是学习python一个非常好的习惯,python assert 断言句语格式及用法很简单.在没完善一个程序之前,我们不知道程序在哪里会出错,与其让它在运行最崩溃,不如在出现错误条件 ...

  5. matlab语言中的assert断言函数

    1.MATLAB语言没有系统的断言函数,但有错误报告函数 error 和 warning.由于要求对参数的保护,需要对输入参数或处理过程中的一些状态进行判断,判断程序能否/是否需要继续执行.在matl ...

  6. C++assert 断言

    该博文为原创文章,未经博主同意不得转载,如同意转载请注明博文出处 本文章博客地址:https://cplusplus.blog.csdn.net/article/details/105022662 C ...

  7. python assert断言的用法

    使用assert断言是学习python一个非常好的习惯,python assert 断言句语格式及用法很简单.在没完善一个程序之前,我们不知道程序在哪里会出错,与其让它在运行最崩溃,不如在出现错误条件 ...

  8. 学习笔记(02):Python网络编程并发编程-assert断言的用途

    立即学习:https://edu.csdn.net/course/play/24458/296228?utm_source=blogtoedu 异常处理 1.异常的捕捉 try:正常需要运行的代码ex ...

  9. C++ ASSERT() 断言机制

    C++ ASSERT() 断言机制 ASSERT()是一个调试程序时经常使用的宏,在程序运行时它计算括号内的表达式,如果表达式为FALSE (0), 程序将报告错误,并终止执行.如果表达式不为0,则继 ...

  10. python中assert是什么意思,python中assert断言的用法

    >>> assert 1 == 0 Traceback (most recent call last): File "", line 1, in Assertio ...

最新文章

  1. 华为荣登2015年VoIP和IMS市场榜首
  2. gateway调用后台系统时选择RFC的决定逻辑
  3. BurpSuit配置抓包http和https请求
  4. 【Vue】—Vue的模板语法
  5. 四大科技支撑大健康生态 360保险输出标准化、定制化两大核心力
  6. java中对数组进行排序_如何在Java中对数组排序
  7. nanopi制作个人服务器,NanoPi K2 服务器系统镜像
  8. JDK与API下载与使用
  9. matlab 取点画图,matlab如何画图
  10. 微信小程序云开发表单使用 name的形式提交后如何清空输入内容
  11. 2019备考[嵌入式系统设计师]之基础知识
  12. Java项目:小区物业管理系统(java+Springboot+ssm+mysql+maven+jsp)
  13. ​单页应用程序是如何打破网页设计的?
  14. 定积分的性质——定积分的基本性质
  15. 【教学类-07-04】20221113《破译电话号码-加减法版+自制(PDF打印)》(大班主题《我要上小学》)
  16. 【Qt开发笔记】Qt设置生成的exe文件图标
  17. 写学习心得,赢华为P30、漫步者音响!
  18. 【图像分类损失】PolyLoss:一个优于 Cross-entropy loss和Focal loss的分类损失
  19. C语言中的程序设计——顺序、选择结构程序设计
  20. 2021 年使用 WordPress 作为 CMS 的 25 个热门网站

热门文章

  1. arduino 鸿蒙,Arduino 开发板介绍及对比(上)
  2. m5 broadcast
  3. 鲤鱼精的python学习笔记(三)
  4. 学计算机得i5还是i7,深度学习i5还是i7
  5. 更相减损术,辗转相除法
  6. win32c语言编程实例,实例分析一个简单的Win32程序
  7. 在定点二进制运算器中,减法运算一般通过什么来实现
  8. 黄家强媒体见面会圆满结束 黄家驹蜡像将于6.8揭幕
  9. Java使用easyExcel操作Excel就是这么简单!
  10. 【贪玩巴斯】Unity3D初学圣经(三)—— unity中的基础概念——scene场景,component组件,assets文件夹和Material材质,Mesh Renderer与shader