
关注点分离,是把复杂对象中的不同问题交给不同规则处理,使每次判断只回答自己负责的部分。它不是说这些问题无关,而是避免一种变化偷偷改写另一种。
写文章时,论点与页面样式彼此相关。但若修改字体必须重写论证,或调整一句话就要重新设计整页,两类工作便缠在一起。把正文与呈现分开保存,既允许它们在发布时组合,也让修改的原因和后果更清楚。
它与内聚相邻却不同:内聚关心一个部分内部的职责是否属于同一件事;关注点分离关心不同问题之间是否保留可辨认的边界。模块化可以承载这种分离,但只有模块名称,没有清楚的责任规则,仍可能混杂。它让“什么变了、为什么变、该由谁判断”保持可追踪。
了解 Geoffrey Chen 的更多信息
订阅后即可通过电子邮件收到最新文章。