《代码大全》阅读笔记-18-表驱动法
表驱动法是一种编程模式(scheme)——从表里面查找信息而不使用逻辑语句(if、case)。事实上,凡是能通过逻辑语句来选择的事物,都可以通过查表来选择。在适当的情况下,采用表驱动法会比复杂的逻辑代码更简单、更容易修改,而且效率更高。
表驱动法必须要解决的两个问题:
1、如何从表中查询条目:
- 直接访问
- 索引访问
- 阶梯访问
2、表里应该存什么:
- data
- action/action ref
灵活的消息格式:metadata+core logic code based on config
核对表(表驱动法)
- 你考虑过把表驱动法作为复杂逻辑的替换方案吗?
- 你考虑过把表驱动法作为复杂继承结构的替换方案吗?
- 你考虑过把表数据存储在外部并在运行期间读入,以便在不修改代码的情况下就可以改变这些数据吗?
- 如果无法用一种简单的数组索引去访问表,那么你把计算访问键值的功能提取成单独的子程序,而不是在代码中重复地计算键值吗?
要点
- 表提供了一种复杂的逻辑和继承结构的替换方案。如果你发现自己对某个应用程序的逻辑或者继承树关系感到困惑,那么问问自己它是否可以通过一个查询表来加以优化
- 使用表的两大关键决策:1、如何访问表;2、表中存放什么
--》状态机
《代码大全》阅读笔记-18-表驱动法相关推荐
- 代码大全阅读笔记02
第二部分:创建高质量的代码 第一部分主要介绍了开发过程和需求分析,强调了构建的重要性,可以说十介绍了技术层面的一些东西.第二部分把目光放到了更加细节的地方,也开始看到了一些代码.内容十分全面,也写了很 ...
- 代码大全阅读笔记01
软件开发过程中的不同活动:定义问题.需求分析.规划构造.软件架构(或高层设计).详细设计. 编程与调试.单元调试.集成测试.集成.系统测试.保障测试.构建活动主要是编码与调试,但也有其他 的活动. 构 ...
- onvif学习笔记7:一个C++封装的onvif代码的阅读笔记
在前面的文章<onvif学习笔记4:Windows环境使用gsoap生成onvif框架代码>.<onvif学习笔记5:onvif框架代码初步了解>中,我们了解了如何生成不同的版 ...
- 《梦断代码》阅读笔记01
这几天阅读了老师推荐的<梦断代码>前几章,通过本书简介可以知道本书大概主要讲的是做软件过程中的困难. 第一章软件时间,主要讲的是从事软件制作行业的艰辛,需要没日没夜的加班工作,书中有这样一 ...
- 《梦断代码》阅读笔记02
在第四章<乐高王国>中,有一段是Chandler的后台工作陷入了作出艰难技术决定的迷宫,而麦卡斯科猛然间发现自己正深处迷宫中央.麦卡斯科曾经在自己的"树龙"blog中记 ...
- 《梦断代码》阅读笔记之第8章至最后
以下是我读了梦断代码第八章之后的读书笔记: 1.自己做的软件自己一定要用,即"吃你自己的狗食",自己的软件开发出来后自己都不会用那么还要指望别人用不成? 2.在软件开发编写代码的时 ...
- 七日杀服务器修改武器,七日杀物品修改代码大全 七日杀合成表修改教程及代码...
七日杀游戏中玩家可以通过修改器合成表来无费制作各种物品,下面来分享一下七日杀合成表修改教程及物品代码,给大家一个参考. 七日杀合成表修改教程及物品代码 你还在纠结物品自己怎么合成不了么?你还在为苦苦寻 ...
- 《第一行代码》学习笔记18-广播接收器Broadcast_Receiver(1)
1.网络通信原理,在一个IP网络范围内最大的IP地址是被保留作为广播地址来使用的.某个网络的IP 范围是192.168.0.XXX, 子网掩码是255.255.255.0,则该网络的广播地址是192. ...
- 《梦断代码》阅读笔记Ⅱ
读"乐高王国"的时候,真的引起了我的共鸣.因为以前我就是作者描述的那种程序猿,专注于制造螺丝和螺母这种小细节,而不屑于利用别人早就写出来不知多少个版本的代码.之前同学一些程序的核心 ...
- 游戏设计模式阅读笔记18——优化模式(对象池模式)
目录 一.意图 二.动机 三.对象池模式 四.实例代码 五.注意 1.对象和池耦合的问题 一.意图 放弃单独地分配和释放对象,从固定的池中重用对象,以提高性能和内存使用率. 二.动机 比如粒子系统的调 ...
最新文章
- php redis 二进制,php-redis扩展
- jQuery / JavaScript:访问iframe的内容
- 【干货】Dask快速搭建分布式集群(大数据0基础可以理解,并使用!)
- jQuery自定义美化下拉框
- RoBERTa中文预训练模型:RoBERTa for Chinese
- Ubuntu 答疑:Ubuntu 添加和删除用户具体步骤及进程被占用的解决方式
- Android平台使用Camera2(5.0+)替代过时的Camera
- 从 LinkedIn 的数据处理机制学习数据架构
- 数学建模——怎样学习数学建模
- Java读取计算 PPT,Word,excel的页数
- could not resolve xxx.jar
- poi事件模式读取excel
- 上级目录,同级目录简写【../,./】
- 【招商银行数据方向笔试题】—— 信用卡推荐客户列表
- 虚拟机(VMware Workstation或Hyper-V)装ghost版系统提示“ntldr is missing Press Ctrl+Alt+del to Resta
- GANSS ALT71D键盘使用说明
- 华科尔d10设置教程_华科尔D10刷Deviation设置参数求教
- 嵌入式Linux驱动大全问世,十年磨一剑,视频!服务!新老客户都有大折扣!
- 实验——一阶RC电路(试验记录)
- 全网热搜·走近棒球运动
热门文章
- Linux-Ubuntu中使用apt进行软件的安装与卸载
- npm ERR! Unexpected end of JSON input while parsing near '...on:0.10.3,direc to'
- #软件配置管理#之坏味道搜集
- 13、mybatis多表关联查询级联属性
- oracle 存储过程 输入,Oracle 存储过程加密方法
- html 如何让div刷新页面,页面刷新.html
- 免费直播丨企服 9 大标杆规模化获客模型解读,制胜企服 3.0 时代
- 奢侈品级别的广告位,到底要不要继续砸钱?
- 【PPT 下载】神策 2017 数据驱动大会干货限时分享!
- 特别的彩蛋给特别的你,新版官网上线啦!