为了避免硬编码业务逻辑,也许很多人在做业务系统时(包括我自己)总希望做一个 Business Rule Engine (BRE),将各种业务规则拆分到原子单位,保存到外部的存储 (xml / DB) 中。然后通过规则的逻辑运算组合来满足业务要求。
今天从下面链接文章中了解到一种观点:
不要尝试去 build 一个 Business Rule Engine.
因为这样很有可能最终会做出一个蹩脚的 DSL 实现,并且最终只有程序员才能理解和维护它,反而违反“将规则抽象化,易于理解和配置”这个初衷。
可能还不如直接使用 C# 直接写来的直接和好维护。
恩,确实值得思考一下。至于这个观点是否正确,需要慢慢体会和检验之。
另外,有必要去了解一下 Prolog 语言. 有一个人的回复写的很有意思:
"those who do not understand Prolog will reinvent it, poorly."
http://badprogrammer.infogami.com/business_rule_engines.html
http://thedailywtf.com/Articles/The_Enterprise_Rules_Engine.aspx
http://en.wikipedia.org/wiki/Cargo_cult_programming