举个例子,考虑超市购物者可以享受的一系列折扣.
我们可以将这些规则定义为某些标准方式的数据(合格项目列表,适用日期,优惠券代码),并编写通用代码来处理这些规则.或者,我们可以将每个代码编写为一大块代码,它会根据客户的购物清单检查相应的内容并返回任何适用的折扣.
您可以合理地将规则存储为对象,序列化为Blob或存储在代码文件中,以便每个规则可以选择自己在数据和代码之间的划分,以允许将来的规则不符合上面考虑的通用处理器的类型.
通过检查应该在文件或数据库中的6个不同的事物的if语句来批评混合数据的代码通常很容易,但是有一个规则有助于边缘情况吗?
或者这是面向对象设计的重点,让我们不要担心数据和代码之间的界限?
澄清一下,基本问题是:你如何编写上面的例子?是否有一条经验法则让您决定什么是数据?什么是代码?
(注意:我知道,代码可以编译,但在动态语言和JIT编译的世界中,即使这是一个模糊的概念.)
language-agnostic oop functional-programming data-structures