Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
If statement 如果是深的,如果是别的树的替代品?_If Statement_Design Patterns_Industrial - Fatal编程技术网

If statement 如果是深的,如果是别的树的替代品?

If statement 如果是深的,如果是别的树的替代品?,if-statement,design-patterns,industrial,If Statement,Design Patterns,Industrial,我最近有幸观察到一个代码,它本质上是几公里深的if-else语句。代码不断更新,跟踪可能的结果及其相互作用变得越来越困难。感觉一个人可以做得更好 我有一个想法,也许可以将if树分割成一个文件,将结果分割成另一个文件。也许人们甚至可以构建一个矩阵,其中每一行都是一个结果,每一个可能提出的问题都是一列。然后可以对这样一个矩阵执行一些基本的逻辑操作,以自动确定新添加的分支是否会干扰现有的分支 我知道这个想法非常模糊,但我相信一定有人考虑过在人工设计和编辑时间方面优化if-else树 是否有任何行业标准

我最近有幸观察到一个代码,它本质上是几公里深的if-else语句。代码不断更新,跟踪可能的结果及其相互作用变得越来越困难。感觉一个人可以做得更好

我有一个想法,也许可以将if树分割成一个文件,将结果分割成另一个文件。也许人们甚至可以构建一个矩阵,其中每一行都是一个结果,每一个可能提出的问题都是一列。然后可以对这样一个矩阵执行一些基本的逻辑操作,以自动确定新添加的分支是否会干扰现有的分支

我知道这个想法非常模糊,但我相信一定有人考虑过在人工设计和编辑时间方面优化if-else树

是否有任何行业标准,以有效的方式处理深层if-else树木?如果是的话,我会很感激你的名字和链接


在这个特殊的例子中,我谈论的是C#,但我也感兴趣的是这个问题通常是如何解决的

您的第二段巧妙地描述了一个决策表,它是分析和实现您描述的扭曲逻辑类型的标准技术。@HighPerformanceMark谢谢,这似乎是正确的方向。我会用谷歌搜索的it@AleksejsFomins看看Drools或JRules或任何其他内置决策表的规则引擎(而不是重新发明轮子)