《代码大全》阅读笔记-18-表驱动法

表驱动法是一种编程模式(scheme)——从表里面查找信息而不使用逻辑语句(if、case)。事实上,凡是能通过逻辑语句来选择的事物,都可以通过查表来选择。在适当的情况下,采用表驱动法会比复杂的逻辑代码更简单、更容易修改,而且效率更高。

表驱动法必须要解决的两个问题:

1、如何从表中查询条目:

  • 直接访问
  • 索引访问
  • 阶梯访问

2、表里应该存什么:

  • data
  • action/action ref

灵活的消息格式:metadata+core logic code based on config


核对表(表驱动法)

  • 你考虑过把表驱动法作为复杂逻辑的替换方案吗?
  • 你考虑过把表驱动法作为复杂继承结构的替换方案吗?
  • 你考虑过把表数据存储在外部并在运行期间读入,以便在不修改代码的情况下就可以改变这些数据吗?
  • 如果无法用一种简单的数组索引去访问表,那么你把计算访问键值的功能提取成单独的子程序,而不是在代码中重复地计算键值吗?

要点

  • 表提供了一种复杂的逻辑和继承结构的替换方案。如果你发现自己对某个应用程序的逻辑或者继承树关系感到困惑,那么问问自己它是否可以通过一个查询表来加以优化
  • 使用表的两大关键决策:1、如何访问表;2、表中存放什么

--》状态机

原文地址:https://www.cnblogs.com/taceywong/p/8719630.html