表驱动开发优点

表驱动方法
2009-08-01 13:46
表驱动方法



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



private void btnCalculate_Click(object sender, EventArgs e)
        {
            //检测输入是否正确
            if (!CheckInput()) return;
           
            int days = 0 ;

            int month = Convert.ToInt16(txbMoth.Text);

            switch (month)
            {
              case 1:
                  days = 31;
                  break;
              case 2:
                  if (IsLeapYear(txbYear.Text))
                  {
                      days = 29;
                  }
                  else
                  {
                      days = 28;
                  }
                  break;
              case 3:
                  days = 31;
                  break;
                 case 4:
                  days = 30;
                  .....
                  .....
              case 11:
                  days = 30;
                  break;
              case 12:
                  days = 31;
                  break;
              default:
                  break;
            }
           txbOutPut.Text = days.ToString();                    
       }

大家可能会看到这里会出现大量的switch、case语句,其实这只是个简单的逻辑,如果在业务逻辑复杂的情况下,代码里
这些if 、else,switch,case语句必将是铺天盖地的出现。好了,我们来看看,表驱动的方法的简单应用吧
 private void btnCalculate_Click(object sender, EventArgs e)
        {
            if (!CheckInput()) return;

        
            int[] dayPerMonth = new int[12] { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
            int[] ldayPerMonth = new int[12] { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };

            int days = 0;
            int index = Convert.ToInt16(txbMoth.Text);

            if (IsLeapYear(txbYear.Text))
            {
                days = ldayPerMonth[index];
            }
            else
            {
                days = dayPerMonth[index];
            }

            txbOutPut.Text = days.ToString(); 
           
          
        }

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

    * 直接访问(Direct Access)
    * 索引访问(Index Access)
    * 阶梯访问(Stair-Step Access)
    有时需要进行变址查询

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

    * 在适当环境下,使用它能够使代码简单、明了。
    * 修改容易(易维护)、效率更高。
    * 表驱动法的一个好处就是能够大量消除代码中if else, swith 判断。
       


代码大全上的,提倡用此法。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值