大多数代码(和大多数错误)都是由异常处理引起的,例如: 如果选中a,则需要输入字段1,5,8和9 否则,如果输入b,则需要输入字段3,4,8 否则,如果选中a并检查b,则需要字段1,3和8
(以上是错误代码的示例,因为具有最后一个条件的代码永远不会被执行,因为第一个如果被检查将被执行然后绕过第三个条件......只是一个潜在错误的例子)
在代码中使用if / switch语句是否更好,以创建一个异常表来传递条件(select *其中a被选中),返回值指示需要哪些字段(这是一个简单的例子)......
优点:更容易修改生产中的逻辑(更新数据库),简化代码 缺点:表和关联。返回规则的逻辑可能会变得混乱,进入数据库进行规则处理会影响性能......
想法?任何人都有数据库方法的经验吗?
答案 0 :(得分:0)
出于易于维护的原因,将规则外化到某些专用“引擎”可能是一种合理的方法。强大的规则引擎有相当大的市场。
这反映了我认为的共同结果。您可以从一些简单的规则开始,这些规则可以在一些简单的数据结构中轻松捕获,但现实世界是粗糙的。您发现特殊情况比比皆是,并且最终需要与代码中一样多或更多的复杂性。
这并不是说外部化是一件坏事,但希望在这样做时我们降低复杂性可能会过于乐观 - 如果业务很复杂,那么规则就是如此,无论你如何捕获它们。
这导致了另一个问题,你将如何管理规则的生命周期。他们正在制作中。企业想要改变它们。在上线之前你需要什么级别的测试?规则的非常可靠性可以使我们不那么谨慎。我认为外化逻辑在某种意义上仍然是代码,需要同样多的QA。