当前位置:五分快三 > 公司简介 > 正文

表驱动法,逻辑控制优化利器


admin| 更新时间:2022-04-15 09:30|点击数:未知

本文转载自微信公众号「架构精进之路」,作者张张。转载本文请联系架构精进之路公众号。

最近好多同学在开发过程中谈到设计表结构的一些idea,为了让大家少走一些弯路,今天就计划聊聊表驱动法吧~

1、概念介绍

表驱动法 是一种编程模式,从表里查找信息而不使用逻辑语句(if/else)

事实上,凡是能通过逻辑语句来选择的事物,都可以通过查表来选择。

对简单的情况而言,使用逻辑语句更为容易和直白,但随着逻辑链的越来越复杂,查表法也就愈发显得更具有吸引力。

应用原则

适当的情况下,采用表驱动法,所生成的代码会比复杂的逻辑代码更简单,更容易修改,而且效率更高。

2、应用实践 2.1 直接访问

2.1.1 今天周几?

传统写法:

String today = "周日"; Switch( dayForMonth % 7 ){     case 0 :          today = "周日";     case 1 :          today = "周一";        case 2 :         today = "周二";        case 3 :         today = "周三";        case 4 :         today = "周四";        case 5 :         today = "周五";        default:         today = "周六";    } 

表驱动法:

String [] weekday = new String[]{"周日","周一","周二","周三","周四","周五","周六"};   String today = weekday [ dayForMonth % 7 ]; 

2.1.2 每个月多少天?

传统写法:

if(1 == iMonth) {   iDays = 31; } else if(2 == iMonth) {   iDays = 28; } else if(3 == iMonth) {   iDays = 31; } else if(4 == iMonth) {   iDays = 30; } else if(5 == iMonth) {   iDays = 31; } else if(6 == iMonth) {   iDays = 30; } else if(7 == iMonth) {   iDays = 31; } else if(8 == iMonth) {   iDays = 31; } else if(9 == iMonth) {   iDays = 30; } else if(10 == iMonth) {   iDays = 31; } else if(11 == iMonth) {   iDays = 30; } else if(12 == iMonth) {   iDays = 31; } 

表驱动法:

把逻辑写成 map 或是 list,一目了然,可以搞个2维数组还加上了闰年的逻辑。

const monthDays = [   [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],   [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] ]  function getMonthDays(month, year) {   let isLeapYear = (year % 4 === 0) && (year % 100 !== 0 
五分快三平台,五分快三官网,五分快三网址,五分快三下载,五分快三app,五分快三开户,五分快三投注,五分快三购彩,五分快三注册,五分快三登录,五分快三邀请码,五分快三技巧,五分快三手机版,五分快三靠谱吗,五分快三走势图,五分快三开奖结果

Powered by 五分快三 @2018 RSS地图 HTML地图