什么是表驱动的方法呢?(What are table-driven methods?)

2019-06-24 07:11发布

什么是“表驱动的方法”?

正如提到的比尔·盖茨第二的Windows Vista商业在1:05。

Answer 1:

表驱动方法的方案,让你查找信息的表,而不是用逻辑语句(即情况下,如果)。 在简单情况下,它的速度更快和更容易使用逻辑语句,但逻辑链变得越来越复杂,表驱动的代码比复杂的逻辑更简单,更容易修改,更高效。

参考: 麦康奈尔,史蒂夫。 代码大全(第二版)。 雷德蒙(华盛顿):微软,2004年打印。 页411,第1段。



Answer 2:

引用的视频有比尔·盖茨从书代码由史蒂夫·麦康奈尔完成阅读。 杰夫阿特伍德在其博客中提到了这一点(YouTube的链接匹配)。

从代码完成,第2版:

表驱动法是一种方案,让您查找信息的表,而不是用逻辑语句(IFCASE)弄明白。

麦康奈尔使用数组作为他的例子他的“表”,但我觉得这个概念可以适用于数据库表或其他任何东西,是表像。

这个概念是真正最好通过一个例子来说明。

假设你正在运行一个餐厅,并有不同数目的席位为每个表数。

你的逻辑来获得的席位数为特定表可能看起来像

if table number == 1
    table has 4 seats
else if table number == 2
    table has 8 seats
. . .

所以如果你有50张桌子,你将有100行代码只是为了确定座位数。

使用表驱动方法,你能与代表表格数量和代表的座位数量值的索引中的数组,所以你的逻辑反而会看起来像

tables [] = {4, 8, 2, 4, ...}
table seats = tables[table number]

这是更简单,更短,更易于维护。



Answer 3:

表驱动方法相当简单。 使用数据结构,而不是假设性陈述来驱动程序逻辑。 例如,如果您正在处理两种类型的记录(电视与有线电视),你可以这样做:

hash[tv] = process_tv_records
hash[cable] = process_cable_records

在一些语言,比如Ruby或Perl,这个技术很简单。 在Java中,你需要使用反射来找到方法处理。

如果您想了解决策表,investiagethe在FitNesse的测试框架http://fitnesse.org/ 。



文章来源: What are table-driven methods?