作者:helloboris | 来源:互联网 | 2023-05-31 19:22
感觉断言的功能,可以用if语句来对异常情况进行的处理来代替。那这样,断言还有什么意义吗?
14 个解决方案
断言是用于调试的
有了断言,可以再加if语句,做防御编程处理,以策代码安全。
不考虑代码安全,只加上断言,就可以了。
另外断言,实际上也是一种文档。
断言设定了,函数的
入口条件。增加了代码的可读性。
所以能加断言,还是尽量加的好。
用户输入之类 无法掌控的 用if
比如说 除法计算的时候 除0 错误
这种情况一般用if 处理
能自己掌控的
能确定运行到这里
这个参数必然是有效
用断言
比如 空指针 [一般没有用户操作生成一个指针传递给你的函数吧]
或者换一种说法
发布之后 仍然需要进行判断的用if
发布之后 可以不进行检查的用断言
断言用于在开发阶段监测BUG,进行调试。
其存在的意义在于检测代码在开发过程中是否出现了问题。
而"if... ",更准确的说是错误处理,是在你的release版本中实实在在应该有的,处理程序运行过程中产生的错误并进行处理,以提高程序的健壮性。
对于在开发过程中的程序员来说,加断言是个好习惯,可以帮助调试。
防御性编程…不是我的发明创造
只是,为了保证代码安全,为了代码代码的健壮性采取的一种措施。
我们有时会自发的这么处理,不过自觉处理可能更好。
防御性编程,就是预防程序;
因为处理不了,而放任代码出错,采取的措施。
比如
你的程序可以处理3种正常情况;
而你的参数,外部变量,等;可能会出现3种正常情况以外的,异常情况
这些没有处理的情况,在调试的时候,可以采用断言处理。
但是发布版,断言不起作用;
要保证程序,不会因为异常情况出错;
就可以用if 语句,把额外的情况排除掉;
在下面正式处理的代码中,就不会再出现例外的情况,从而排除了异常;
可以按照,正常逻辑,直接编写了代码。
推荐看看这本书
编写安全的代码(write secure code.pdf英文版)
C安全编码标准.pdf
编写安全的C,C++代码
等