表驱动方法

简介:
1:什么是表 动法.
     表驱动法是一种编程模式(Scheme),从表里面查找信息而不使用逻辑语句(if 和case) 它的好处是消除代码里面到处出现的if、else、swith语句,让凌乱代码变得简明和清晰。对简单情况而言,表驱动方法可能仅仅使逻辑语句更容易和直 白,但随着逻辑的越来越复杂,表驱动法就愈发有吸引力。
2:表驱动法的例子演示
    假设有段程序要计算某年某月的天数
    通常的做法如下:

 


 1private void btnCalculate_Click(object sender, EventArgs e)
 2        {
 3            //检测输入是否正确
 4            if (!CheckInput()) return;
 5            
 6            int days = 0 ;
 7
 8            int month = Convert.ToInt16(txbMoth.Text);
 9
10            switch (month)
11            {
12              case 1:
13                  days = 31;
14                  break;
15              case 2:
16                  if (IsLeapYear(txbYear.Text))
17                  {
18                      days = 29;
19                  }
20                  else
21                  {
22                      days = 28;
23                  }
24                  break;
25              case 3:
26                  days = 31;
27                  break;
28              case 4:
29                  days = 30;
30                  break;
31              case 5:
32                  days = 31;
33                  break;
34              case 6:
35                  days = 30;
36                  break;
37              case 7:
38                  days = 31;
39                  break;
40              case 8:
41                  days = 31;
42                  break;
43              case 9:
44                  days = 30;
45                  break;
46              case 10:
47                  days = 31;
48                  break;
49              case 11:
50                  days = 30;
51                  break;
52              case 12:
53                  days = 31;
54                  break;
55              default:
56                  break;
57
58            }
59
60            txbOutPut.Text = days.ToString();                     
61        }
 大家可能会看到这里会出现大量的switch、case语句,其实这只是个简单的逻辑,如果在业务逻辑复杂的情况下,代码里
这些if 、else,switch,case语句必将是铺天盖地的出现。好了,我们来看看,表驱动的方法的简单应用吧
 1  private void btnCalculate_Click(object sender, EventArgs e)
 2        {
 3            if (!CheckInput()) return;
 4
 5         
 6            int[] dayPerMonth = new int[12] { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
 7            int[] ldayPerMonth = new int[12] { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
 8
 9            int days = 0;
10            int index = Convert.ToInt16(txbMoth.Text);
11
12            if (IsLeapYear(txbYear.Text))
13            {
14                days = ldayPerMonth[index];
15            }
16            else
17            {
18                days = dayPerMonth[index];
19            }
20
21            txbOutPut.Text = days.ToString();  
22            
23           
24        }

对比这两段代码,你会发现如果用表驱动法,你的代码将会更简洁,明了。
3:表驱动法查询数据的方式

  • 直接访问(Direct Access)
  • 索引访问(Index Access)
  • 阶梯访问(Stair-Step Access)

4:表驱动法优点
     前面一直在强调表驱动法的优点,下面我们来总结一下:

  • 在适当环境下,使用它能够使代码简单、明了。
  • 修改容易(易维护)、效率更高。
  • 表驱动法的一个好处就是能够大量消除代码中if  else, swith 判断。
相关文章
|
7月前
|
Go 开发工具 C++
2023驱动保护学习 -- 创建第一个驱动程序
2023驱动保护学习 -- 创建第一个驱动程序
71 0
|
7月前
驱动保护 -- 读取被保护的数据(第二种方法)
驱动保护 -- 读取被保护的数据(第二种方法)
52 0
|
7月前
|
数据库 C++
2023驱动保护学习 -- 通过代码实现驱动加载
2023驱动保护学习 -- 通过代码实现驱动加载
40 0
|
7月前
驱动保护 -- 读取被保护的数据
驱动保护 -- 读取被保护的数据
56 0
|
7月前
2023驱动保护学习 -- 通过代码实现驱动卸载
2023驱动保护学习 -- 通过代码实现驱动卸载
48 0
|
存储 Cloud Native Linux
C++ 表驱动方法代替if-else
C++ 表驱动方法代替if-else
|
存储 SQL Java
Mysql数据库表字段设计优化(状态列)
初始状态码(java int 32 long 64),int 可以表示31种(除去0000),long可以表示63种(除去0000),当然不可能将0000赋值给初始状态,一般来讲,选择int还是long是根据具体业务需求来决定的。
634 0
Mysql数据库表字段设计优化(状态列)
表驱动法
什么是表驱动法? 是一种编程模式,从表里查找信息而不使用逻辑语句(if 和case)。事实上,凡是能通过逻辑语句来选择的事物,都可以通过查表来选择。对简单的情况而言,使用逻辑语句更为容易和直白,但随着逻辑链的越来越复杂,查表法也就愈发显得更具有吸引力。
表驱动法
|
缓存 数据库连接 数据库
DbVisualizer 数据库连接工具:添加数据库驱动方法。dbvis搜索不到驱动文件夹下的驱动解决方法
DbVisualizer 数据库连接工具:添加数据库驱动方法。dbvis搜索不到驱动文件夹下的驱动解决方法
1012 0
DbVisualizer 数据库连接工具:添加数据库驱动方法。dbvis搜索不到驱动文件夹下的驱动解决方法
|
Linux ice Windows
V5.10 DebugServer中CKLINK驱动更新说明
V5.10 DebugServer中CKLINK驱动更新说明
V5.10 DebugServer中CKLINK驱动更新说明