Ответ 1

Таблично-ориентированные методы - это схемы, которые позволяют вам искать информацию в таблице, а не использовать логические операторы (например, case, if). В простых случаях быстрее и проще использовать логические операторы, но по мере усложнения логической цепочки табличный код проще, чем сложная логика, проще изменять и более эффективно.

Ссылка: Макконнелл, Стив. Код завершен, второе издание. Редмонд (Вашингтон): Microsoft, 2004. Печать. Страница 411, Пункт 1.

Ответ 2

В упомянутом видео есть Билл Гейтс, читающий из книги Code Complete Стив Макконнелл. Джефф Этвуд упомянул об этом в своем блоге (ссылки на YouTube совпадают).

Из кода Complete, 2nd edition:

Метод, управляемый таблицами, представляет собой схему, которая позволяет вам искать информацию в таблице, а не использовать логические операторы (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]

который проще, короче и проще в обслуживании.

Ответ 3

Настольный метод довольно прост. Используйте структуры данных вместо инструкций if-then для управления логикой программы. Например, если вы обрабатываете два типа записей (телевидение и кабель), вы можете сделать это:

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

На некоторых языках, таких как Ruby или Perl, этот метод прост. В Java вам нужно будет использовать Reflection для поиска ручек методов.

Если вы хотите узнать о таблицах решений, исследуйте рамки тестирования Fitnesse на http://fitnesse.org/.