一种思考模式,数据驱动编程,将逻辑放到数据中控制

为什么写这篇文章

  • 腾讯3面挂的原因之一应该有数据驱动编程,所以写个文章思考回顾一下这个问题

一点故事

刚毕业的第一年,那时候看过一本书,《unix编程艺术》,被其中的编程哲学吸引。
有一个原则:提供机制,而不是直接的方案。该原则一直指导我的编程工作。大部分情况下我都奉行该原则编程。
还有一个编程技巧,叫做表驱动方法。把对数据的操作装配到数据里面,根据输入的数据查表找到对应的处理方法。
具体则是使用map存储函数的指针。这个技巧对编程工作帮助颇大,减少了很多switch,if else,使流程轻快简明。
工作中我经常使用这个技巧。这个技巧便是属于数据驱动编程的范畴。

数据驱动编程

概述

数据驱动编程是一种编程模型,它使用数据控制逻辑,不把逻辑写在代码里面。它更清晰简洁,易于维护。
数据驱动编程不是万能的,有其适用范围,适合流程和逻辑明确,处理数据可以抽象出来的情景。
关键在于构建一个数据结构能够承载需求。
编程需要进行的逻辑思考一点都不会少,但是从人类的视角看,数据更好理解,逻辑和流程不好理解。
世上没有银弹,根据情景选择合适的方案。

栗子

有一些列的数据和对这些数据的操作,可以构建一个映射,把数据和操作对应起来,用map的形式
map<data, function> dataToOper
当有数据输入的时候dataToOper[data].Invoke(data)
数据里面可以包含一下流程控制或者开关的数据,甚至回调代码,这样只要数据改变,这段代码不用改变,程序的逻辑可以改变。
比如
游戏中的变现策略。根据玩家的付费情况给不同的商品弹框或者礼包。
代码没有更改过,因为记录了玩家的购买情况,用这些情况作为配置,找到对应的礼包和商品展示给玩家。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值