微习惯养成第二天——读代码大全18章 表驱动法

第18章 表驱动法

18.1 表驱动法使用总则(General considerations in using table-driven methods)

表驱动法是一种编程模式(scheme),从表里面查找信息而不是使用逻辑语句(if和case)。事实上凡是能通过逻辑语句来选择的事物都可以通过查询表来选择。相比较逻辑语句,表驱动法更加简单,容易修改,而且效率高。

举例说明(伪代码):

假设你希望把字符划分为字母,标点符号,数字三类,如果使用逻辑语句实现:

if((input >='a' && input <= 'z') || input >='A' && input <= 'Z'){
    charType = 字母;
}else if(input is '', ',' ,' .','!','-','(',')' ...etc){
    charType = 符号;
}else if(input >= 0 && input <= 9){
    charType = 数字;
}

如果要使用表查询法,则可以把每个字符的类型保存到一个用字符编码访问的数组里,类似一维数组:

字符数组索引 字符类型
a 字母
... ...
Z 字母
, 符号
... ...
/ 符号
1 数字
... ...
9 数字

然后就会产生如下的查询:

charType = charTypeTable[inputChar]

表驱动法的两个问题(Two issues in using table-drvien methods)

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

  1. 怎样从表中查询条目;
  • 直接访问(direct access)
  • 索引访问(indexed access)
  • 阶梯访问(Stair-step access)
  1. 你应该在表里存些什么;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第一部分 打好基础 Laying the Foundation 第一章 欢迎进入软件构建的世界 Welcome t...
    白桦叶阅读 4,695评论 0 17
  • Spark SQL, DataFrames and Datasets Guide Overview SQL Dat...
    Joyyx阅读 8,349评论 0 16
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,766评论 18 399
  • 善妒的丈夫德克总怀疑妻子玛撒在外面偷情,近一年来表现的越来越暴力。丈夫一直跟踪妻子,发现可能的第三者不论时间地点就...
    ZL小左阅读 680评论 0 0
  • 这是一个多么善良的孩子啊! 善良是中华传统美德之一,也是优良的家风之一。善良对孩子的成长有着重要的影响。 对于如何...
    吴悦溪阅读 211评论 0 0