Что такое "табличный метод"?
Как упомянул Билл Гейтс во втором рекламном ролике Windows Vista в 1:05.
Что такое "табличный метод"?
Как упомянул Билл Гейтс во втором рекламном ролике Windows Vista в 1:05.
Таблично-ориентированные методы - это схемы, которые позволяют вам искать информацию в таблице, а не использовать логические операторы (например, case, if). В простых случаях быстрее и проще использовать логические операторы, но по мере усложнения логической цепочки табличный код проще, чем сложная логика, проще изменять и более эффективно.
В упомянутом видео есть Билл Гейтс, читающий из книги 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]
который проще, короче и проще в обслуживании.
Настольный метод довольно прост. Используйте структуры данных вместо инструкций if-then для управления логикой программы. Например, если вы обрабатываете два типа записей (телевидение и кабель), вы можете сделать это:
hash[tv] = process_tv_records
hash[cable] = process_cable_records
На некоторых языках, таких как Ruby или Perl, этот метод прост. В Java вам нужно будет использовать Reflection для поиска ручек методов.
Если вы хотите узнать о таблицах решений, исследуйте рамки тестирования Fitnesse на http://fitnesse.org/.