首页 > 其他 > 详细

为什么要使用回调函数

时间:2014-01-19 15:57:12      阅读:423      评论:0      收藏:0      [点我收藏+]

  最近在代码中大量使用了callback函数,没有google到大神关于是否要更多或更少的使用callback函数的论述,可能是这个问题太白痴了吧,暂且陈述一下自己的观点。

  假如,有时候我们需要在逻辑上分2层,如下图:

 

bubuko.com,布布扣
 1 |------------------|
 2 |          High Level         |
 3 |------------------|
 4 |          Low Level          |
 5 |------------------|
 6 //如果这样写
 7 int low_do_a(int xx)
 8 {
 9   hgih_do_b(xx);
10 }
11 
12 int hgih_do_b(int xx)
13 {
14   ...
15 }
16 int high_do_a(int)
17 {
18   ...
19   low_do_a(xx);
20   ...
21 }
bubuko.com,布布扣
   那么逻辑上可能是个样子的:
  bubuko.com,布布扣
  这种逻辑图令我很不爽,因为我可能还需要知道
hgih_do_b是干什么的,层与层之间会有耦合,如HighLevel变了没有high_do_b。
  那么如果以下面的形式加工一下:
bubuko.com,布布扣
 1  int low_do_a(int xx, int (*do_something)(int xx, void *param), void *param)
 2  {
 3      ...
 4       if (do_something)
 5      do_something(xxx, param);
 6      ...
 7  }
 8     
 9  int hgih_do_b(int xx, void *param)
10  {
11      ...
12 }
13  int high_do_a(int)
14 {
15   ...
16    low_do_a(xx, high_do_b, xxx);
17    ...
18  }
bubuko.com,布布扣
    这样一看,虽然实际上还是调用了上层,但是灵活性大增加,上层可以定制某一部分下层的行为,而且逻辑上来看应该是这个样子:
  bubuko.com,布布扣
  这样一看逻辑就清晰了很多。
  注:这样做由于会有间接调用,因此,会有一些额外的传参与访存开销,对于
MCU代码中对时间要求较高的代码要慎用。

为什么要使用回调函数

原文:http://www.cnblogs.com/findstr/p/3525865.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!