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

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

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

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

2、表里应该存什么:

  • data
  • action/action ref

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


核对表(表驱动法)

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

要点

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

--》状态机

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

  1. 代码大全阅读笔记02

    第二部分:创建高质量的代码 第一部分主要介绍了开发过程和需求分析,强调了构建的重要性,可以说十介绍了技术层面的一些东西.第二部分把目光放到了更加细节的地方,也开始看到了一些代码.内容十分全面,也写了很 ...

  2. 代码大全阅读笔记01

    软件开发过程中的不同活动:定义问题.需求分析.规划构造.软件架构(或高层设计).详细设计. 编程与调试.单元调试.集成测试.集成.系统测试.保障测试.构建活动主要是编码与调试,但也有其他 的活动. 构 ...

  3. onvif学习笔记7:一个C++封装的onvif代码的阅读笔记

    在前面的文章<onvif学习笔记4:Windows环境使用gsoap生成onvif框架代码>.<onvif学习笔记5:onvif框架代码初步了解>中,我们了解了如何生成不同的版 ...

  4. 《梦断代码》阅读笔记01

    这几天阅读了老师推荐的<梦断代码>前几章,通过本书简介可以知道本书大概主要讲的是做软件过程中的困难. 第一章软件时间,主要讲的是从事软件制作行业的艰辛,需要没日没夜的加班工作,书中有这样一 ...

  5. 《梦断代码》阅读笔记02

    在第四章<乐高王国>中,有一段是Chandler的后台工作陷入了作出艰难技术决定的迷宫,而麦卡斯科猛然间发现自己正深处迷宫中央.麦卡斯科曾经在自己的"树龙"blog中记 ...

  6. 《梦断代码》阅读笔记之第8章至最后

    以下是我读了梦断代码第八章之后的读书笔记: 1.自己做的软件自己一定要用,即"吃你自己的狗食",自己的软件开发出来后自己都不会用那么还要指望别人用不成? 2.在软件开发编写代码的时 ...

  7. 七日杀服务器修改武器,七日杀物品修改代码大全 七日杀合成表修改教程及代码...

    七日杀游戏中玩家可以通过修改器合成表来无费制作各种物品,下面来分享一下七日杀合成表修改教程及物品代码,给大家一个参考. 七日杀合成表修改教程及物品代码 你还在纠结物品自己怎么合成不了么?你还在为苦苦寻 ...

  8. 《第一行代码》学习笔记18-广播接收器Broadcast_Receiver(1)

    1.网络通信原理,在一个IP网络范围内最大的IP地址是被保留作为广播地址来使用的.某个网络的IP 范围是192.168.0.XXX, 子网掩码是255.255.255.0,则该网络的广播地址是192. ...

  9. 《梦断代码》阅读笔记Ⅱ

    读"乐高王国"的时候,真的引起了我的共鸣.因为以前我就是作者描述的那种程序猿,专注于制造螺丝和螺母这种小细节,而不屑于利用别人早就写出来不知多少个版本的代码.之前同学一些程序的核心 ...

  10. 游戏设计模式阅读笔记18——优化模式(对象池模式)

    目录 一.意图 二.动机 三.对象池模式 四.实例代码 五.注意 1.对象和池耦合的问题 一.意图 放弃单独地分配和释放对象,从固定的池中重用对象,以提高性能和内存使用率. 二.动机 比如粒子系统的调 ...

最新文章

  1. php redis 二进制,php-redis扩展
  2. jQuery / JavaScript:访问iframe的内容
  3. 【干货】Dask快速搭建分布式集群(大数据0基础可以理解,并使用!)
  4. jQuery自定义美化下拉框
  5. RoBERTa中文预训练模型:RoBERTa for Chinese
  6. Ubuntu 答疑:Ubuntu 添加和删除用户具体步骤及进程被占用的解决方式
  7. Android平台使用Camera2(5.0+)替代过时的Camera
  8. 从 LinkedIn 的数据处理机制学习数据架构
  9. 数学建模——怎样学习数学建模
  10. Java读取计算 PPT,Word,excel的页数
  11. could not resolve xxx.jar
  12. poi事件模式读取excel
  13. 上级目录,同级目录简写【../,./】
  14. 【招商银行数据方向笔试题】—— 信用卡推荐客户列表
  15. 虚拟机(VMware Workstation或Hyper-V)装ghost版系统提示“ntldr is missing Press Ctrl+Alt+del to Resta
  16. GANSS ALT71D键盘使用说明
  17. 华科尔d10设置教程_华科尔D10刷Deviation设置参数求教
  18. 嵌入式Linux驱动大全问世,十年磨一剑,视频!服务!新老客户都有大折扣!
  19. 实验——一阶RC电路(试验记录)
  20. 全网热搜·走近棒球运动

热门文章

  1. Linux-Ubuntu中使用apt进行软件的安装与卸载
  2. npm ERR! Unexpected end of JSON input while parsing near '...on:0.10.3,direc to'
  3. #软件配置管理#之坏味道搜集
  4. 13、mybatis多表关联查询级联属性
  5. oracle 存储过程 输入,Oracle 存储过程加密方法
  6. html 如何让div刷新页面,页面刷新.html
  7. 免费直播丨企服 9 大标杆规模化获客模型解读,制胜企服 3.0 时代
  8. 奢侈品级别的广告位,到底要不要继续砸钱?
  9. 【PPT 下载】神策 2017 数据驱动大会干货限时分享!
  10. 特别的彩蛋给特别的你,新版官网上线啦!