热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

用断言好还是if语句?

感觉断言的功能,可以用if语句来对异常情况进行的处理来代替。那这样,断言还有什么意义吗?
感觉断言的功能,可以用if语句来对异常情况进行的处理来代替。那这样,断言还有什么意义吗?

14 个解决方案

#1


if是实的,真正的增加代码量,降低执行效率;而断言是虚的,在Debug的时候可以帮助调试,在Release的时候并不存在。

引用 楼主 explorer8 的回复:
感觉断言的功能,可以用if语句来对异常情况进行的处理来代替。那这样,断言还有什么意义吗?

#2


断言是用于调试的
有了断言,可以再加if语句,做防御编程处理,以策代码安全。
不考虑代码安全,只加上断言,就可以了。

另外断言,实际上也是一种文档。
断言设定了,函数的 入口条件。增加了代码的可读性。

所以能加断言,还是尽量加的好。

#3


首先要分清 流程控制和测试目的的区别

#4


用户输入之类 无法掌控的 用if
比如说 除法计算的时候 除0 错误 
这种情况一般用if 处理

能自己掌控的 
能确定运行到这里 
这个参数必然是有效
用断言 
比如 空指针 [一般没有用户操作生成一个指针传递给你的函数吧]

或者换一种说法 
发布之后 仍然需要进行判断的用if 
发布之后 可以不进行检查的用断言

#5


断言用于在开发阶段监测BUG,进行调试。
其存在的意义在于检测代码在开发过程中是否出现了问题。

而"if... ",更准确的说是错误处理,是在你的release版本中实实在在应该有的,处理程序运行过程中产生的错误并进行处理,以提高程序的健壮性。

对于在开发过程中的程序员来说,加断言是个好习惯,可以帮助调试。

#6


引用 5 楼 fuxiang 的回复:
断言用于在开发阶段监测BUG,进行调试。
其存在的意义在于检测代码在开发过程中是否出现了问题。

而"if... ",更准确的说是错误处理,是在你的release版本中实实在在应该有的,处理程序运行过程中产生的错误并进行处理,以提高程序的健壮性。

对于在开发过程中的程序员来说,加断言是个好习惯,可以帮助调试。
明白了

#7


引用 4 楼 lin5161678 的回复:
用户输入之类 无法掌控的 用if
比如说 除法计算的时候 除0 错误 
这种情况一般用if 处理

能自己掌控的 
能确定运行到这里 
这个参数必然是有效
用断言 
比如 空指针 [一般没有用户操作生成一个指针传递给你的函数吧]

或者换一种说法 
发布之后 仍然需要进行判断的用if 
发布之后 可以不进行检查的用断言
了解

#8


引用 2 楼 lm_whales 的回复:
断言是用于调试的
有了断言,可以再加if语句,做防御编程处理,以策代码安全。
不考虑代码安全,只加上断言,就可以了。

另外断言,实际上也是一种文档。
断言设定了,函数的 入口条件。增加了代码的可读性。

所以能加断言,还是尽量加的好。
第一次听到防御性编程…

#9


防御性编程…不是我的发明创造
只是,为了保证代码安全,为了代码代码的健壮性采取的一种措施。
我们有时会自发的这么处理,不过自觉处理可能更好。

防御性编程,就是预防程序;
因为处理不了,而放任代码出错,采取的措施。

比如
你的程序可以处理3种正常情况;
而你的参数,外部变量,等;可能会出现3种正常情况以外的,异常情况

这些没有处理的情况,在调试的时候,可以采用断言处理。

但是发布版,断言不起作用;
要保证程序,不会因为异常情况出错;

就可以用if 语句,把额外的情况排除掉;

在下面正式处理的代码中,就不会再出现例外的情况,从而排除了异常;
可以按照,正常逻辑,直接编写了代码。

#10


推荐看看这本书
编写安全的代码(write secure code.pdf英文版) 

#11


C安全编码标准.pdf
编写安全的C,C++代码

#12


去看《编程精粹》

#13


两者没任何关系

#14


引用 9 楼 lm_whales 的回复:
防御性编程…不是我的发明创造
只是,为了保证代码安全,为了代码代码的健壮性采取的一种措施。
我们有时会自发的这么处理,不过自觉处理可能更好。

防御性编程,就是预防程序;
因为处理不了,而放任代码出错,采取的措施。

比如
你的程序可以处理3种正常情况;
而你的参数,外部变量,等;可能会出现3种正常情况以外的,异常情况

这些没有处理的情况,在调试的时候,可以采用断言处理。

但是发布版,断言不起作用;
要保证程序,不会因为异常情况出错;

就可以用if 语句,把额外的情况排除掉;

在下面正式处理的代码中,就不会再出现例外的情况,从而排除了异常;
可以按照,正常逻辑,直接编写了代码。
了解…

推荐阅读
author-avatar
helloboris
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有