上QQ阅读APP看书,第一时间看更新
1.4 战略层面的关键概念
相信很多人都见过这样的情形:从小项目演化而来的大系统最终变成开发团队的噩梦。这些噩梦几乎无一例外地源于软件的概念完整性(Conceptual Integrity)遭到了破坏(很少是因为单纯的技术原因)。代码可能是一代又一代的开发人员各行其是地堆叠起来的(所谓的“祖传代码”),在这个过程中没有人意识到有必要去维护软件的概念完整性。而DDD,特别是DDD在战略层面提供的概念,是维护软件概念完整性的良药。
概念完整性对软件开发的重要性在弗雷德里克·布鲁克斯(Frederick P.Brooks Jr.)的经典著作《人月神话》一书中被重点提出。
什么叫作概念完整性?通俗地讲,就是所有人对领域内的所有事物持相同的看法。举例来说,我们把“张三”这个“对象”叫作张三后,就不会再把他叫作李四。我们不会把张三的儿子也叫作张三,我们可以把他叫作“张小三”。大家都知道张三和张小三之间存在父子关系,不会刚才有人说他们是父子,转脸又有人说他们是兄弟。
在《领域驱动设计精简版》的第5章中,介绍了DDD在战略层面维护模型的概念完整性的方法。笔者个人认为其中最重要的两个概念是限界上下文(Bounded Context)与防腐层(Anti-Corruption Layer),下文打算针对它们以及“统一语言”进行阐述。其他战略层面的概念读者可自行阅读《领域驱动设计精简版》或搜索其他文章以深入了解,在此不再赘述。