使用表驱动法编程,在项目中减少使用if -else的无限逻辑判断

使用表驱动法编程,在项目中减少使用if -else的无限重复

表驱动法是一种编程模式——从表里查找信息而不是使用逻辑语句。
随着逻辑复杂性的增加,if/else 或switch中的代码将变得越来越肿,所以我们常说数据比程序逻辑更易驾驭。表驱动法就是将这些逻辑中的数据与逻辑分开,从而减少逻辑的复杂度。

我是在别的语言看到的,但是对于前端来说我也是很不错的编程模式和选择,虽然这些是很简单的东西,但是主要要培养自己这种解决问题的思维。

1.从一个例子说起日历

以一个月的天数为例,我们要写一串if/else 或者switch/case 来表达逻辑。

if (month === 1) {
    return 31;
}
if (month === 2) {
    return 28;
}
...
if (month === 12) {
    return 31;
}

但是我们把数据存到一数据表里,就不需要多而重复的逻辑了。

let  monthTable= [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]

 function getdays (month) {
     return monthTable[month-1]
 }
2.阶梯访问

对于一些无规则的数据,例如等级划分,列如:0-59等级为F,59-79为E,以此类推。我们没法使用简单的转换将数据转换为索引,但是我们可以使用一个循环,依次检查区间的上下限。

//如果还用if else 这种方式还要需要很多代码。
const grade = [59,79,84,89,94,100]; 
const level = ["F","E","D","C","B","A"];


function getGrade(grade){
	 for(let i = 0 ; i < grade.length ; i++){
        if(g <= grade[i]) 
        return level[i];
    }
}

表驱动的优势

  • 可读性更强,逻辑一目了然
  • 数据与逻辑解耦,修改数据即可
  • 逻辑可重用
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值