首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >决定表或if-else语句

决定表或if-else语句
EN

Stack Overflow用户
提问于 2013-10-09 09:28:30
回答 3查看 1.1K关注 0票数 2

我需要知道是更好的我作出决定表或如果-否则的声明。如果决策表更适合下面的规则,请告诉我制作它所需的基本代码是什么。我试过使用if- not语句来实现它,但是输出不是我想要的。这个问题适用于百家乐游戏,以下是规则:

  • 首先,如果任何一位玩家都有一只名为“自然”的8或9手牌,游戏就会结束,并且永远不会抽到第三张牌。
  • 第二,如果没有自然状态,则玩家将收到第三张牌(“抽签”或“命中”),或不收到(“看台拍”),根据以下规则:-The播放机必须绘制一张手值为5或更少的牌,并以6或更多的值站立。-Third,如果没有自然的,则经销商根据下列规则抽签或站起来-If没有抽牌,那么交易商必须按照与玩家相同的规则:经销商必须用5或更少的手抽一张牌,然后用6或更多的手拍牌。
  • -If玩家确实画了第三张牌,这个决定是根据那张牌的价值(叫做C3)和经销商的手的价值来决定的。经销商必须抽出一张手值小于或等于某一极限L的卡,其中L的计算方式如下:
  • 如果C3大于8,则Y= C3-10,否则Y= C3.所以Y从-2到7。
  • 若要得到L,除以Y为2,将结果截断,并将3.l从2增加到6。 较少。
EN

回答 3

Stack Overflow用户

发布于 2013-10-09 09:34:03

原则上,您应该使用决策表/开关等(如果您担心通过案例进行有效处理),一旦if-否则-if子句上升到5或更多(只是一个足以影响平均访问时间的值)。

更新:5在任何地方都没有编写。我用它来说明一个概念,虽然我记得在开关用例为8或更多的时候,我见过一些编译器做过,但那是很久以前的事了。

其基本原理是手动遍历每个if子句将导致线性越出,对于决策表而言,访问将是常数时间

在实践中,您的代码已经被每一个优秀的编译器优化为,一旦大量情况出现,就会将其放入决策表/哈希表中,因此这是无关紧要的。

Following会有帮助的。注意,选择开关或决策表,或者是否也取决于,测试子句是如何构造的。开关只适用于整数值。如果您无法将要被随机访问的测试条件关联起来,那么您可能没有其他选择,而只能使用If - another。

票数 2
EN

Stack Overflow用户

发布于 2013-10-09 09:46:03

选择最易读和最可维护的解决方案。在实际演示性能问题之前,不要担心优化。

票数 1
EN

Stack Overflow用户

发布于 2013-10-10 03:48:07

从您的评论中,您已经提到使用决策表更好,因为有很多规则。

这在某种程度上是正确的,但并不是真的。

根据你的描述,有很多规则是为了不同的目的而制定的。不管您正在编写决策表或手工手工,如果-否则,您仍然需要根据规则的使用和上下文正确地组织规则,并分离“业务流程”来使用这些规则。

如果您没有这样做,那么使用决策表就更难编写代码,也更难读取。

当您考虑使用决策表(这意味着您要使用规则引擎)时,可读性可能不是最重要的因素。使用规则引擎的主要原因是为了便于将来规则的改变。如果您没有预见到这种需求,我强烈建议使用结构正确的代码“手工制作”逻辑。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19268068

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档