什么是“表驱动方法”?
比尔盖茨在second Windows Vista commercial在1:05提到。
答案 0 :(得分:20)
表驱动方法是允许您在表中查找信息而不是使用逻辑语句(即case,if)的方案。在简单的情况下,使用逻辑语句更快更容易,但随着逻辑链变得越来越复杂,表驱动代码比复杂逻辑更简单,更易于修改和更高效。
答案 1 :(得分:8)
引用的视频中有比尔盖茨从史蒂夫麦康奈尔的书中完整阅读。 Jeff Atwood mentioned this in his blog (the YouTube links match up).
从Code Complete,第2版:
表驱动方法是一种允许您在表中查找信息而不是使用逻辑语句( if 和 case )来计算信息的方案。
McConnell使用数组作为他的"表"在他的例子中,但我认为这个概念可以应用于数据库表或任何其他类似表格的东西。
这个概念最好通过一个例子来解释。
我们假设您正在经营一家餐馆,每个餐桌的座位数不同。
获取特定表格席位数的逻辑可能类似于
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]
更简单,更短,更易于维护。
答案 2 :(得分:3)
表驱动方法非常简单。使用数据结构而不是if-then语句来驱动程序逻辑。例如,如果您正在处理两种类型的记录(电视与电缆),您可以这样做:
hash[tv] = process_tv_records
hash[cable] = process_cable_records
在某些语言中,如Ruby或Perl,这种技术很简单。在Java中,您需要使用Reflection来查找方法句柄。
如果您想了解决策表,请在http://fitnesse.org/调查Fitnesse测试框架。