面对现实,超越自己
逆水行舟,不进则退
posts - 269,comments - 32,trackbacks - 0
本文转自:http://www.cppblog.com/humanchao/archive/2008/08/19/59309.html

我们先看一个函数:函数的功能完成1~10的加法。

int Add1to10(int a, int b)
{
   
return a +b;
}

但是一般我们还需要加上几条代码:

int Add1to10(int a, int b)
{
    assert(a 
>= 1 && a <= 10);
    assert(b 
>= 1 && b < =10);

    
if ( a < 1 || a > 10 || b < 1 || b > 10)
        
return -1;

    
return a +b;
}

加上上面几条代码的作用是检查函数的输入参数,当参数不正确的时候不光要在返回值上得到体现,而且会触发assert断言,提醒我们参数有误。

断言式编程体现一个编程的思想,在我们的程序执行偏离预想的路线时给出提醒。当程序执行偏离预想的路线时一般会出现两种可能:即断言以上的程序没有理解下面程序的调用条件、或断言以下的程序需要接受更为宽泛输入条件。以下分别讨论修改方法:

1、如果函数的输入参数是我们编程的一个疏漏,我们认为根本就不应该出现或产生这样的值,那我们应该修改调用函数处的代码,避免非预想的值出现。

2、如果无法避免出现或者产生一个非法输入值,那我们要么在函数调用处加入判断,产生符合条件的值时调用函数,不符合参数条件else处理;要么修改函数,使函数可以接受更为宽泛输入条件,并调整断言内容和参数判断逻辑。

断言不仅可以出现在函数的参数检查的场合,也可以出现在其他的上下文调用的场合。而且它还会随着程序的开发进程逐渐的增加、删除和调整。它可以验证程序是按照我们预想的思路在执行,当出现意外时及时的给出提醒,提醒我们修正程序或者自己的思路。
posted on 2012-04-12 12:58 王海光 阅读(622) 评论(0)  编辑 收藏 引用 所属分类: 其他

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理