数据驱动编程

为什么写这篇文章

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

一点故事

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

数据驱动编程

概述

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

栗子

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

你可能感兴趣的:(编程杂谈)