Что такое табличные методы?
-
01-07-2019 - |
Вопрос
Что такое "табличный метод"?
Как упоминал Билл Гейтс в вторая реклама Windows Vista в 1:05.
Решение
Табличные методы - это схемы, которые позволяют вам искать информацию в таблице, а не использовать логические инструкции (т. е.случай, если).В простых случаях быстрее и проще использовать логические инструкции, но по мере усложнения логической цепочки табличный код становится проще сложной логики, его легче модифицировать и он эффективнее.
Другие советы
На упомянутом видео Билл Гейтс читает отрывок из книги Стива Макконнелла "Code Complete". Джефф Этвуд упомянул об этом в своем блоге (ссылки на YouTube совпадают).
Из Code Complete, 2-е издание:
Табличный метод - это схема, которая позволяет вам искать информацию в таблице, а не использовать логические инструкции (если и кейс) чтобы разобраться в этом.
Макконнелл использует массив в качестве "таблицы" в своих примерах, но я думаю, что эта концепция может быть применена к таблицам базы данных или ко всему другому, что похоже на таблицу.
Эту концепцию действительно лучше всего объяснить на примере.
Допустим, вы управляете рестораном и у вас разное количество посадочных мест для каждого столика.
Ваша логика получения количества мест за определенным столом может выглядеть примерно так
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 вам нужно было бы использовать отражение для поиска дескрипторов методов.
Если вы хотите узнать о таблицах принятия решений, изучите систему тестирования фитнеса по адресу http://fitnesse.org/.