- 复杂精致的领域模型是可以得到的,而且值得为之付出努力
- 除非通过一个迭代过程对模型进行反复重构,并且由领域专家以及有兴趣学习领域的开发人员密切参与,否则很难开发出有效的模型
- 实现和有效地使用这种模型需要复杂的设计技巧
为改进模型而进行的重构可以称之为模型重构。通过多次模型重构,来让模型越来越好。模型最重要的是反映领域的深层的本质的问题,而不是(或不只是)表面的问题。深层模型往往含有很多领域内的抽象概念,这些概念在新加入的开发人员看来很陌生,但在领域专家看来往往是很自然的。领域模型不仅应当反映深层模型,还应当在设计上充分灵活。
第8章 突破
重构的投入与回报是一种非线性的关系。通常每次细微的努力都会获得细微的改进,这些改进逐渐累积起来。然后,一些至关重要的理解会骤然破土而出,为整个项目带来电击般的震动。持续进行的重构通常也为一些飞跃性的质变作好了准备。代码和模型的每次精化都为开发人员提供了一个更清晰的视图,使他们有可能在理解上获得突破。经过一连串的修改之后,我们将得到一个更深层次、更符合实际和用户需求的模型。模型突然变得更强大、更清晰易懂,而模型的复杂性反而会降低。这种突破并不是一种技术,而是一种事件。 突破就像是顿悟或灵感一样,是经过长时间的思考之后,突然发生的质的飞跃。 当突破来临之前,人们往往会因为害怕突破对现有程序带来的巨大的变更,而不敢前进。而这个时候必须冷静决策,大胆前进。为了突破而付出是值得的。 不要企图“制造”突破,那会使您无法动弹。通常只有在执行了许多细微的重构之后,才可能出现突破。我们大部分时间都会花在细微的改进上,连续的每次精化使我们对模型的理解节节进步。 不要犹豫作一些小的改进。即使这些改进并没有突破原来的通用概念框架,也会逐步深化我们的模型。不要企图看得太远,那样只会反受其害。