|
大多数程序员对于自己编写的代码都是非常自信的。他们相信自己编写的代码,那些低级的问题在他的代码中是不可能发生的。
比如,他们相信:
[list,
[*,这些代码不会被用上30年,所以用两位数字表示日期没问题。
[*,这个应用决不会在国外使用,那么为什么要使其国际化?
[*,count不可能为负。
[*,这个printf不可能失败。
[/list,但是这些不可能发生的事情在某种特定的情况下死也是有可能发生的。
所以,优秀的程序员不是用嘴来断言的,他们会在程序中使用断言来检查这些不可能发生的情况。
[indent,如果它不可能发生,用断言确保它不会发生。
[/indent,在大多数C和C++实现中,程序员都能找到用于断言的工具——assert或_assert宏。程序员可以使用他们来检查那些不可能发生的情况是否真的不会发生。
比如:
如果要确认传入的指针不应该是NULL,那么就检查它:
如果要检查一个排序算法是否能正常工作,也可以使用断言:
当断言失败的时候会调用错误处理器或者生成异常,这意味着不该发生的情况发生了。程序员需要就此分析并查找原因,修改代码直至断言成功。
通过使用断言对编码时的各种假设进行检查和验证,这可以使得代码避免很多的错误。
编程假设有很多,不闻不问理不合
使用断言来判定,减少错误获益多 |
|