微习惯养成第二天——读代码大全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. 你应该在表里存些什么;

你可能感兴趣的:(微习惯养成第二天——读代码大全18章 表驱动法)