代码大全读书笔记-第十八章:表驱动法

第十八章:表驱动法

章节目录

  • 1.表驱动法使用总则
  • 2.直接访问表
  • 3.间接访问表
  • 4.阶梯访问表

1.表驱动法使用总则

表驱动法是一种编程模式–从表中查找信息而不使用逻辑判断,在适当情况下,使用表驱动法实现代码会比逻辑代码更简单、更容易修改、更高效

###使用表驱动法要解决两个问题:

  • 怎样从表中查询条目?

    1.直接访问:适合简单数据例如月份(1~12)

    2.间接访问:适合索引范围很大的数据例如电话号码(xxx-xx-xxxx)

    3.阶梯访问:适合按照范围划分的、无规律分布数据

  • 应该在表中存什么?

    1.数据:可以储存数据

    2.动作:可以储存描述某次操作的代码

    3.子程序引用:可以储存子程序引用,直接调用

2.直接访问表

你可以直接在表中访问到你想要的条目,这种情况叫做直接访问表

要点:

  • 将数据直接存储在所有因素索引的数组里
  • 将某种动作存储在所有因素索引的数组里,从数组种查询到对应的动作描述,然后依次执行原子动作
  • 构造查询键值,对于范围性的数据(0~17),可以选择复制信息从而能够直接使用键值,或者转换键值使其能够直接使用

适用范围:

  • 数据分布是连续的(中间不能出现太大空白,否则会有空间浪费)

3.索引访问表

先从一张索引表中查出键值,再用这一键值在主表中查出你感兴趣的主数据

要点

  • 索引表中包含了所有索引范围,主表中只包含了储存的数据

适用范围

  • 索引范围很大然而表中所含记录远远小于索引范围时
  • 经常对数据进行操作
  • 数据需要经常更新

4.阶梯访问表

表中的记录对于不同的数据范围有效而不是对不同的数据点有效

要点

  • 创建一个区间表用于存储每一个区间的上限
  • 创建一个等级表用于存储每个区间的值
  • 使用一个循环判断数据处于哪个区间,再从等级表中读取数据

适用范围

  • 数据按照范围划分并且无规则分布
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值