DDD中简单模型比复杂模型更危险


很多人将数据表之间的关系图或者将类的静态结构关系作为聚合模型的设计依据,这是片面的。这属于一种简单模型,复杂聚合模型是应该考虑这些结构中部件的交互关系的。mathiasverraes这篇文章主要谈论这点:
所有模型都是错误的,但是简单模型比复杂模型更错误。简单的模型更具吸引力,更易于教授,传播和应用。因此,它们可以更快地带来价值,并且可以更快地造成伤害。“一切都应该尽可能简单,但不要更简单。” (爱因斯坦)是个很好的建议,但风险是我们忘记了最后一点。这不是在开玩笑,而是对减单主义的严肃警告。
 
发现还原论
还原论是一种逻辑方法,(Reductionism,相关词语deductionism演绎法,这个单词类似归纳法,它是将事物还原拆解成部件 ),它将问题空间视为部件的简单组合,而忽略了隐藏但必不可少的复杂性(例如,部件之间的关​​系)。您最终得到的是看似简单的模型,但实际上是有损模型。(banq注:很多人将数据表之间的关系图或者将静态结构关系作为聚合模型的设计依据,这是片面的。)
幸运的是,还原方法通常很容易使用。它以“ [复杂事物]只是[简单事物]的组成”为开始。归纳成的模型具有“ 5个简单步骤”或“ 3个秘密”,或诸如EASY之类的便捷助记词首字母缩写。
其他类型的简单模型有:模型会接受随着时间的变化而改变。他们接受例外作为改进模型的输入。当异常不适合作为输入时,这些异常不会被模型丢弃而是会被接受(模型没有对输入参数的业务规则校验)。
 
如何深化简单模型
一个简单的还原论模型可以满足90%的情况,那么在10%的情况下,我们需要进行深化工作以找到更好,更丰富,更合适的模型。检查自己处于标准情况还是例外情况?如果您身边缺少某些情况,则发出红旗警告,帮助您选择正确的方法。
采取脚手架方法,这样在一开始就能快速进步,将其用作寻找您自己的更好模型的先河,然后摆脱简单的模型。这种办法好处:首先没有重新发明轮子,但最后发现了新颖的解决方案,以解决简单模型作者无法预见的新颖问题。简单模型并没有明确地作为脚手架卖给我们,但是我们可以将其作为脚手架深入化。(脚手架的意思就是利用简单模型对业务的深入理解,将简单模型作为我们开始深入的工具,不只是简单批评然后抛弃它)
 
通过这两种办法,可以将模型变得更加复杂(也就是说,它解决了问题空间中更多的固有复杂性)。复杂的模型虽然不那么容易出错,但却难于培训教学、传播和应用!