作者:朱金灿
来源: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. org.hibernate.TypeMismatchException: Provided id of the wrong type for class *** Expected ***
  2. 简单的python抢红包脚本-这个Python脚本牛逼了,秒抢红包就算了,还能无视撤回消息...
  3. CVPR 2021 | 基于跨任务场景结构知识迁移的单张深度图像超分辨率方法
  4. python tensorflow 文本提取_如何在tensorflow中保存文本分类模型?
  5. sqoop建表_使用Sqoop创建/导入配置单元表
  6. 微信小程序批量获取input的输入值,监听输入框,数据同步
  7. android图案解锁忘了怎么解,安卓手机解锁图案忘了怎么办?手机解锁密码忘了怎么办?...
  8. Android的View事件分发机制原理
  9. Linux中的基础I/O
  10. 8款受欢迎的代码编辑器,你喜欢用哪一款呢?
  11. 计算机管理员权限打不开怎么办,administrator管理员权限怎么打开?
  12. 最近打算更新一篇图片上传的文档!(一直更新得比较缓慢)
  13. 《白帽子讲Web安全》8-文件上传漏洞
  14. 一周5G资讯 | 全国已建成5G基站19.8万个,套餐用户5000多万;“新基建”范围首次明确...
  15. 如何防止表单重复提交问题
  16. 修炼内功的融云,以通讯中台赋能企业数字化升级
  17. 小陈Java学习笔记0810
  18. 财务视角下的BI价值——把握客户需求,助推业财融合
  19. 提高抗打击能力_如何提高心理抗打击能力?
  20. 数据库 virtual 虚拟字段

热门文章

  1. GPU基数排序(CUDA radix sort)
  2. C++和Python Java的区别
  3. html栅栏布局,bootstrap12栅格布局
  4. 呼叫中心管理系统的优势
  5. 如何给视频制作添加字幕?
  6. PAT(pat)乙级合级(全)C语言
  7. android获取路由器ip地址吗,手机查看路由器设置网址(登录IP地址)的方法
  8. 听说你斗图总是输,我从GitHub连夜扒拉出来这个神仙项目送给你
  9. linux如何修改ip文件夹,求助!Linux下C++程序如何修改系统IP?
  10. vue2的三种传值方式之父传子、子传父、兄弟共享数据