104

我的工作任务是为我们正在编码的物流应用程序编写详细的工程计划,以向客户提出建议。有人告诉我这是一个数据驱动的应用程序。应用程序“数据驱动”意味着什么?什么是相反的?我似乎无法得到任何真正明确的答案,尽管在网络搜索时我可以看到很多人发布他们自己的例子。任何帮助将不胜感激。

4

8 回答 8

104

数据驱动编程是一种编程模型,其中数据本身控制程序的流程,而不是程序逻辑。这是一个模型,您可以通过向程序提供不同的数据集来控制流程,其中程序逻辑是某种通用形式的流程或状态更改。

例如,如果您的程序有四种状态:UP - DOWN - STOP - START

您可以通过提供代表状态的输入(数据)来控制此程序:

  • 设置 1:向下 - 停止 - 开始 - 停止 - 向上 - 停止
  • 设置 2:上 - 下 - 上 - 下

程序代码保持不变,但数据集(不是动态输入类型,而是静态提供给计算机)控制流程。

于 2009-06-30T19:51:58.133 回答
60

尽管关于什么是数据驱动编程有很多想法,但请允许我举一个使用数据结构和函数的例子。

非数据驱动示例:

data_lloyd = {'name': 'Lloyd', 'lives': 'Alcoy }
data_jason = {'name': 'Jason', 'lives': 'London' }
go = function(x) 
    if x.name == 'Lloyd' 
    then 
        print("Alcoy, Spain") 
    else 
        print("London, UK") 
end

数据驱动示例:

data_lloyd = {'name': 'Lloyd', 'lives': function(){ print("Alcoy, Spain") }
data_jason = {'name': 'Jason', 'lives': function(){ print("London, UK") }
go = function(x)
    x.lives()
end

在第一个示例中,显示一个结果或另一个结果的决定是在代码逻辑中。在最后一个示例中,输出由传递给函数的数据决定,因此我们说输出是由数据“驱动”的。

于 2011-06-06T11:08:46.463 回答
47

“有人告诉我这是一个数据驱动的应用程序”——你需要问问是谁告诉你的。

您不想在这里阅读一些似是而非的答案,然后发现这根本不是您项目负责人的意思。这句话太模糊了,没有明确的含义,肯定会适用于您的项目。

于 2009-06-30T19:40:55.907 回答
15

数据驱动开发是一种可以通过编辑数据结构而不是代码来改变程序逻辑的东西。

您可以在此处找到有关数据驱动编程的更多信息。

程序化编程

var data = { 
            {do:'add',arg:{1,2}},
            {do:'subtract',arg:{3,2}},
            {do:'multiply',arg:{5,7}},
            };

foreach(var item in data){  
    switch(item.do){
        case 'add':
            console.log(item.arg[0] + item.arg[1]);
        break;
        case 'subtract':
            console.log(item.arg[0] - item.arg[1]);
        break;
        case 'multiply':
            console.log(item.arg[0] * item.arg[1]);
        break;
    }
}

数据驱动编程

var data = { 
            {do:'+',arg:{1,2}},
            {do:'-',arg:{3,2}},
            {do:'*',arg:{5,7}},
            };

foreach(var item in data){      
    console.log(eval (item.arg[0] + item.do + item.arg[1]);
}
于 2017-01-17T20:38:05.743 回答
8

数据驱动的应用是:

(1) 一组规则,接受不同的数据集,为每个特定的数据集做出预定的决定,并抛出结果作为结果

(2)根据结果触发的几个预定过程。

完美的例子是 ifttt.com

该应用程序只有规则。使它有用的是流经它的数据。

于 2012-10-12T03:53:28.207 回答
5

本文最清楚地解释了我理解该术语的含义:

什么是表驱动和数据驱动编程? http://www.paragoncorporation.com/ArticleDetail.aspx?ArticleID=31

数据/表驱动编程是将重复的编程结构分解为数据和转换模式的技术。当以这种方式使用时,这种新数据通常被纯粹主义者称为 元数据。

于 2009-06-30T20:05:34.297 回答
1

工作中没有人可以帮助您解决这个问题吗?如果没有更好的例子,很难想象你在做什么。但据我所知,这将是一个他们主要输入信息的程序。这将能够检索和编辑客户需要管理的信息。

祝你好运!!

于 2009-06-30T19:43:52.547 回答
1

我认为给出的建议还不错,但我一直认为数据驱动设计围绕使用现有或给定的数据结构作为域对象的基础。

例如,经典的销售人员管理程序可能具有以下类型的表结构:

  • 销售员
  • 地区
  • 顾客
  • 产品

因此,您的应用程序将以管理这些数据结构为中心,而不是采用直接的 API 来执行诸如“销售”之类的事情......

正如其他答案所暗示的那样,只是我的看法;)

于 2009-06-30T19:48:52.383 回答