2008-09-19 20 views

回答

20

表驅動方法表驅動方法的方案,讓你查找信息的表,而不是使用邏輯語句(即case,if)。在簡單情況下,使用邏輯語句更快更容易,但隨着邏輯鏈變得更加複雜,表驅動代碼比複雜邏輯更簡單,更容易修改並且更高效。

參考:McConnell, Steve. Code Complete, Second Edition. Redmond (Washington): Microsoft, 2004. Print. Page 411, Paragraph 1.

+2

如果這是一個盲目的複製粘貼,請考慮添加引用。 – Trix 2016-05-28 00:52:37

3

表驅動方法相當簡單。使用數據結構而不是if-then語句來驅動程序邏輯。例如,如果您正在處理兩種類型的記錄(電視與有線電視),你可以這樣做:

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

在一些語言,比如Ruby或Perl,這個技術很簡單。在Java中,您需要使用Reflection來查找方法句柄。

如果您想了解決策表,請在http://fitnesse.org/處調查Fitnesse測試框架。

6

引用的視頻有比爾·蓋茨從史蒂夫·麥康奈爾的「代碼完成」一書中閱讀。 Jeff Atwood mentioned this in his blog (the YouTube links match up).

從代碼完成,第2版:

表驅動法是一種方案,讓您查找表中的信息,而不是用邏輯語句(如果情況)弄明白。

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] 

,其結構簡單,更短,並且更易於維護。

相關問題