聂同学

一个程序员和架构师的实践与思考

重构,以知识结构为中心(二)

我们认为两个方面的措施可以改善我们的知识结构。

一、设计和维护知识结构

知识结构必须有意识地设计和维护。

我们使用上下文(Context)和上下文地图(Context Map)来结构化我们的知识,这两个概念都来自于DDD战略设计1。 简单讲上下文就是知识一致性的单元。上下文地图就是上下文之间的关系。

上下文如下图示意,是一个有明确边界的单元,知识是其核心,也是其价值。边界中的其他元素是维持知识的手段。左边的是知识的描述,比如模型。右上是知识的守护和传承者:团队。右下是知识的体现形式——各种组件,比如后台的服务,前台的Android App,数据库Schema等。

而上下文地图,是描述和维护上下文之间的关系的一个图。上下文与上下文地图加在一起,体现了全局范围内对知识结构的设计。

二、区别应用知识与领域知识

应用知识描述的是如何(使用业务来)达成功能,领域知识描述的是业务本身。明确这两种知识的差别,除了一般的划分知识制造隔离的目的外,主要的是两个目的:

  1. 解决前文提到的“补丁”和“碎片”问题。应用和领域分开演化,解决“补丁”问题;领域负责维护业务一致性,解决“碎片”问题。
  2. 建立明确稳定的知识关联。如果没有领域,应用之间直接关联,在不同的时段不停变化,今天由于这项业务跟这个应用关联,明天又由于那项业务跟那个应用关联。关联不稳定,如下图左方所示。而有了领域作为关联枢纽,应用之间不需要直接关联,同时应用与领域的关联不会经常变化。

后文继续,讲讲维护知识的手段


  1. Eric Evans《领域驱动设计——软件核心复杂性应对之道》

架构, 重构, 领域

分享 -