什么是“表驱动的方法”?
正如提到的比尔·盖茨第二的Windows Vista商业在1:05。
什么是“表驱动的方法”?
正如提到的比尔·盖茨第二的Windows Vista商业在1:05。
表驱动方法的方案,让你查找信息的表,而不是用逻辑语句(即情况下,如果)。 在简单情况下,它的速度更快和更容易使用逻辑语句,但逻辑链变得越来越复杂,表驱动的代码比复杂的逻辑更简单,更容易修改,更高效。
参考: 麦康奈尔,史蒂夫。 代码大全(第二版)。 雷德蒙(华盛顿):微软,2004年打印。 页411,第1段。
引用的视频有比尔·盖茨从书代码由史蒂夫·麦康奈尔完成阅读。 杰夫阿特伍德在其博客中提到了这一点(YouTube的链接匹配)。
从代码完成,第2版:
表驱动法是一种方案,让您查找信息的表,而不是用逻辑语句(IF和CASE)弄明白。
麦康奈尔使用数组作为他的例子他的“表”,但我觉得这个概念可以适用于数据库表或其他任何东西,是表像。
这个概念是真正最好通过一个例子来说明。
假设你正在运行一个餐厅,并有不同数目的席位为每个表数。
你的逻辑来获得的席位数为特定表可能看起来像
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]
这是更简单,更短,更易于维护。
表驱动方法相当简单。 使用数据结构,而不是假设性陈述来驱动程序逻辑。 例如,如果您正在处理两种类型的记录(电视与有线电视),你可以这样做:
hash[tv] = process_tv_records
hash[cable] = process_cable_records
在一些语言,比如Ruby或Perl,这个技术很简单。 在Java中,你需要使用反射来找到方法处理。
如果您想了解决策表,investiagethe在FitNesse的测试框架http://fitnesse.org/ 。