为什么要使用回调函数

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

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

 

 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 }
   那么逻辑上可能是个样子的:
  
  这种逻辑图令我很不爽,因为我可能还需要知道
hgih_do_b是干什么的,层与层之间会有耦合,如HighLevel变了没有high_do_b。
  那么如果以下面的形式加工一下:
 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  }
    这样一看,虽然实际上还是调用了上层,但是灵活性大增加,上层可以定制某一部分下层的行为,而且逻辑上来看应该是这个样子:
  
  这样一看逻辑就清晰了很多。
  注:这样做由于会有间接调用,因此,会有一些额外的传参与访存开销,对于
MCU代码中对时间要求较高的代码要慎用。
 

转载于:https://www.cnblogs.com/findstr/p/3525865.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值