关于什么时候用assert(断言)的思考
作者:朱金灿
来源:http://blog.csdn.net/clever101
在公司一个同事问我:"什么时候应该用assert?比如某个函数的输入参数为一个指针,要进行有效计算,该指针必须非空,我弹出一个警告对话框来提示对方不就行了吗?干吗要用assert?我想问的是什么时候用对话框提示用户,什么时候用assert?"
这是一个值得思考的问题。首先明确assert(这里我说的是C++环境下)是需要在调试状态下才能生效的,在发布版是失效的。调试生效的事实告诉我们的是assert的一个重要作用是帮助开发者调试程序定位错误的。作为开发者一个普遍事实是解决bug并不难,定位bug往往是最难的。这也是我倡导多使用assert的原因所在。再深想一层,我们作一个假想:假如assert在发布版上也能用,那么什么时候用assert,什么时候用提示对话框,原则是什么?我认为这里有一个用户层次的问题。程序其实一般有两类用户:未发布前的开发者和发布后的用户。作为开发者,我们假定他是懂断言的,但对于用户,我们却不能假定他懂断言。如果这个接口是面对开发者的,那么就应该用断言来限制输入参数;如果是面向用户的,那么就应用提示对话框,比如弹出一个对话框选择让用户选择一个输入文件,但用户还没选择文件就按"确定"按钮,这应该用对话框就是提示,而不应该断言(这里如果弹出断言对话框,他还不知道是怎么回事呢)。
关于什么时候用assert(断言)的思考相关推荐
- Python assert断言函数及用法
Python assert断言函数及用法 Python assert 语句,又称断言语句,可以看做是功能缩小版的 if 语句,它用于判断某个表达式的值,如果值为真,则程序可以继续往下执行:反之,Pyt ...
- python assert 断言的作用
python assert 断言句语格式及用法很简单.在没完善一个程序之前,我们不知道程序在哪里会出错,与其让它在运行最崩溃,不如在出现错误条件时就崩溃,这时候就需要assert断言的帮助.本文主要是 ...
- Python assert 断言
assert断言语句用来声明某个条件是真的,其作用是测试一个条件(condition)是否成立,如果不成立,则抛出异常. assert一般用法: assert condition 如果conditio ...
- Python assert 断言函数
使用assert断言是学习python一个非常好的习惯,python assert 断言句语格式及用法很简单.在没完善一个程序之前,我们不知道程序在哪里会出错,与其让它在运行最崩溃,不如在出现错误条件 ...
- matlab语言中的assert断言函数
1.MATLAB语言没有系统的断言函数,但有错误报告函数 error 和 warning.由于要求对参数的保护,需要对输入参数或处理过程中的一些状态进行判断,判断程序能否/是否需要继续执行.在matl ...
- C++assert 断言
该博文为原创文章,未经博主同意不得转载,如同意转载请注明博文出处 本文章博客地址:https://cplusplus.blog.csdn.net/article/details/105022662 C ...
- python assert断言的用法
使用assert断言是学习python一个非常好的习惯,python assert 断言句语格式及用法很简单.在没完善一个程序之前,我们不知道程序在哪里会出错,与其让它在运行最崩溃,不如在出现错误条件 ...
- 学习笔记(02):Python网络编程并发编程-assert断言的用途
立即学习:https://edu.csdn.net/course/play/24458/296228?utm_source=blogtoedu 异常处理 1.异常的捕捉 try:正常需要运行的代码ex ...
- C++ ASSERT() 断言机制
C++ ASSERT() 断言机制 ASSERT()是一个调试程序时经常使用的宏,在程序运行时它计算括号内的表达式,如果表达式为FALSE (0), 程序将报告错误,并终止执行.如果表达式不为0,则继 ...
- python中assert是什么意思,python中assert断言的用法
>>> assert 1 == 0 Traceback (most recent call last): File "", line 1, in Assertio ...
最新文章
- 华为荣登2015年VoIP和IMS市场榜首
- gateway调用后台系统时选择RFC的决定逻辑
- BurpSuit配置抓包http和https请求
- 【Vue】—Vue的模板语法
- 四大科技支撑大健康生态 360保险输出标准化、定制化两大核心力
- java中对数组进行排序_如何在Java中对数组排序
- nanopi制作个人服务器,NanoPi K2 服务器系统镜像
- JDK与API下载与使用
- matlab 取点画图,matlab如何画图
- 微信小程序云开发表单使用 name的形式提交后如何清空输入内容
- 2019备考[嵌入式系统设计师]之基础知识
- Java项目:小区物业管理系统(java+Springboot+ssm+mysql+maven+jsp)
- ​单页应用程序是如何打破网页设计的?
- 定积分的性质——定积分的基本性质
- 【教学类-07-04】20221113《破译电话号码-加减法版+自制(PDF打印)》(大班主题《我要上小学》)
- 【Qt开发笔记】Qt设置生成的exe文件图标
- 写学习心得,赢华为P30、漫步者音响!
- 【图像分类损失】PolyLoss:一个优于 Cross-entropy loss和Focal loss的分类损失
- C语言中的程序设计——顺序、选择结构程序设计
- 2021 年使用 WordPress 作为 CMS 的 25 个热门网站
热门文章
- arduino 鸿蒙,Arduino 开发板介绍及对比(上)
- m5 broadcast
- 鲤鱼精的python学习笔记(三)
- 学计算机得i5还是i7,深度学习i5还是i7
- 更相减损术,辗转相除法
- win32c语言编程实例,实例分析一个简单的Win32程序
- 在定点二进制运算器中,减法运算一般通过什么来实现
- 黄家强媒体见面会圆满结束 黄家驹蜡像将于6.8揭幕
- Java使用easyExcel操作Excel就是这么简单!
- 【贪玩巴斯】Unity3D初学圣经(三)—— unity中的基础概念——scene场景,component组件,assets文件夹和Material材质,Mesh Renderer与shader