当前位置: 首页 > wzjs >正文

陕西网站建设中英文网站是咋做的

陕西网站建设,中英文网站是咋做的,网站你懂我意思正能量晚上不用下载直接进入,长春企业宣传片制作公司目录前言问题定义需求定义改造过程表驱动设计中数据范围的处理后记前言 《代码大全2》中单独罗列了一章描述表驱动法,旨在告诉读者,面对复杂的多分支结构(if 或者是 case),可以想着使用表驱动法实现或者改造。面向对象…

目录

    • 前言
    • 问题定义
    • 需求定义
    • 改造过程
    • 表驱动设计中数据范围的处理
    • 后记

前言

《代码大全2》中单独罗列了一章描述表驱动法,旨在告诉读者,面对复杂的多分支结构(if 或者是 case),可以想着使用表驱动法实现或者改造。面向对象的多态也是用来改善多 if 或者多 case 的代码结构。诚然,多if 或者多 case 的代码并非十恶不赦,但是也需要看到多态实现和表驱动实现的好处,用于评估改造的成本和收益。工作中曾经也用过类似的思想,这里记录下来。


问题定义

  • 存在多分支结构
// 判断一个月有多少天
if (month = 1) {days = 31
} else if (month = 2) {days = 28
} else if (month = 3) {days = 31
} ..... else {}
  • 嵌套 if 结构,用于支撑复杂逻辑
if (女性) {if (单身) {if (不抽烟) {if (年龄 < 18) {保险费率 = 200} else if (年龄 < 38) {保险费率 = 300} ... }}
}
  • 解析多种数据格式(规则)。这里也可以使用多态改造,后续会交代表驱动的实现为什么比多态更好
if (规则1) {规则1解析逻辑块 
} else if (规则2) {规则2解析逻辑块 
} else if ...  {}

需求定义

改造代码属于非功能性需求,是优化程序的,让复杂逻辑保持迭代健康的手段。主要的目的是

  • 为新需求奠定良好的实现基础
  • 明确程序职责,把变化的东西归集到表中,提高拓展性

改造过程

  • 存在多分支结构
// 判断一个月有多少天
if (month = 1) {days = 31
} else if (month = 2) {days = 28
} else if (month = 3) {days = 31
} ..... else {}

这个场景很简单,用一个数组维护即可

int daysPerMonth[] = {0, 31, 28,31, ....}
days = daysPerMonth[input]
  • 嵌套 if 结构
if (女性) {if (单身) {if (不抽烟) {if (年龄 < 18) {保险费率 = 200} else if (年龄 < 38) {保险费率 = 300} ... }}
}

不管逻辑再怎么复杂,都能把嵌套的逻辑扁平化,如:

性别 - 是否单身 - 是否抽烟 - 年龄 - 费率

形如数据库中的一条表字段,那么就能启示我们这么做:

保险费率 = rateTable(性别, 是否单身, 是否抽烟, 年龄)
  • 解析多种数据格式(规则)
if (规则1) {规则1解析逻辑块 
} else if (规则2) {规则2解析逻辑块 
} else if ...  {}

规则是一种较为复杂的实现,不同的规则可能需要读取不同的字段。简单来说,不同规则所关注的信息类型、范围可能不同。那么针对这些容易变化的场景,表驱动大有用处。

// 规则定义Eg
规则1 总字段数 3[FiledType]	[FiledValue]字段1 角色 			admin字段2 姓名 			james字段3 参数 			{a: hello}
规则1结束// 有多个规则,都放到数组中
fieldDescription[]// 规则字段对象表定义 AbstractFiled 是一个抽象类 (这里引入了多态)
AbstractFiled field[]
field[角色] = new 角色解析器 extends AbstractFiled ();
field[姓名] = new 姓名解析器 extends AbstractFiled ();
field[参数] = new 参数解析器 extends AbstractFiled ();// 规则解析核心代码
while (有待消费的规则事件) {规则k = fieldDescription[规则事件.规则编号]n = 1while (未遍历完规则k的所有字段) {fieldType = 规则k[字段n].FiledTypefieldValue = 规则k[字段n].FiledValue解析器 = field[fieldType]解析器.解析(fieldType, fieldValue)n++}
}

可以看到,用了表驱动设计,核心代码块很好看懂,变化的部分都被封装到了不同的类去了。
其中fieldDescription[规则事件.规则编号] 规则k[字段n] field[fieldType] 都是查表的思想


表驱动设计中数据范围的处理

上文提到的查询都可以视为 索引表, 但是索引是一个区间的时候该如何映射到入参呢,《代码大全2》把以下这种解决方案成为 阶梯访问表

  • 一个简单的例子
[分数 / 总分 定义]		[等级]
>= 90% 					A
< 90% 					B
< 75% 					C
< 65%					D
< 50%					F

根据分数查等级的SQL

select 等级 
fromwhere 自己的分数 / 总分 >= [分数 / 总分 定义]
limit 1	
  • 同理,更加复杂的例子也可以用这个方法
概率			保险索赔额度
0.45232			0
0.54723			254
0.5323			43535

后记

曾经在学习 Spock 测试框架的时候就了解到了表驱动设计。遗留的问题今天终于理解了。包括工作中遇到的异常节点的规则配置、lookup大宽表、角色权限表查询、多条件计算器实现。举的例子跟公司业务相关就不太好展开描述。简单来说,印证了表驱动设计有足够多的应用场景。使用表驱动设计的时候,想一想能不能用多态,如果代价合理,引入多态是个不错的选择。


文章转载自:

http://z9fa5mCC.bpgkd.cn
http://bvha67SQ.bpgkd.cn
http://j0xnCejq.bpgkd.cn
http://tjKwqW61.bpgkd.cn
http://v5dlMw36.bpgkd.cn
http://tleJ1cAM.bpgkd.cn
http://NtGVxT46.bpgkd.cn
http://Q9hTUKLT.bpgkd.cn
http://ERLbUmRa.bpgkd.cn
http://OphbvcUC.bpgkd.cn
http://rrvJVP6n.bpgkd.cn
http://eTCKhFHl.bpgkd.cn
http://a25KZmC9.bpgkd.cn
http://VpBSk6Dm.bpgkd.cn
http://SiXznRV1.bpgkd.cn
http://y3Mgtfcd.bpgkd.cn
http://cxWRKfWD.bpgkd.cn
http://XxXdM4Mw.bpgkd.cn
http://ZGKhGePT.bpgkd.cn
http://Be2mdKIi.bpgkd.cn
http://slIZPt93.bpgkd.cn
http://4mSMMy7P.bpgkd.cn
http://v702wjIS.bpgkd.cn
http://RAV1tKC3.bpgkd.cn
http://PcSuwZYV.bpgkd.cn
http://v7PRm6ul.bpgkd.cn
http://YeKvwGM1.bpgkd.cn
http://0j20NS7S.bpgkd.cn
http://frxPYQFp.bpgkd.cn
http://xJDimoxG.bpgkd.cn
http://www.dtcms.com/wzjs/628198.html

相关文章:

  • 青岛建设局网站爱站网是干嘛的
  • 土地流转网站建设项目国家企业信息网官网查询营业执照
  • 企业网站建设的原则全国物流网站有哪些平台
  • 代运营网站app推广营销公司
  • 自己网站做虚拟币违法吗昆山建设招投标网站
  • 福建住房和城乡建设网站廊坊视频优化排名
  • 淘客网站怎么做代理魔方优化大师官网下载
  • 织梦做淘宝客网站重庆网站建设mswzjs
  • 重庆自助建站系统哪家好绵阳市建设工程质量监督站网站
  • 个人网站建设论文自适应企业网站源码
  • 营销型网站建设网站建设制作单页网站 营销
  • 淘宝做图片的网站自媒体创业计划书word
  • 企业网站要求个人网站作品欣赏
  • 旅游电子商务网站开发制作品牌设计案例
  • 有哪些育儿类网站做的比较好用asp做的一个网站实例源代码
  • 国外网站会让国内人做吗定制旅游网站建设成都
  • 平和网站建设php网站开发工程师面试
  • 2019做哪个网站赚钱南京哪个网站做物业贷
  • 黑群晖做php网站广告设计公司招聘
  • 个人电子邮箱怎么注册网站速度优化方案
  • ios网站开发深圳网站制作费用
  • 网站建设名字专业网站设计网站
  • 怎样才能有自己的网站国企网站开发
  • 国展做网站的公司丹阳翼网首页
  • 做网贷网站多少钱重庆公司有哪些
  • 长垣有做网站设计的吗最近发生的新闻事件
  • 免费企业网络推广网站佛山新网站建设
  • 上海人才网官网站首页网络营销策略理论有哪些
  • 网站开发前台与后台的交互seo公司杭州
  • 群网站建设合同锦兴建筑人才招聘平台