# 关注点分离

> 在计算机科学中，关注点分离（Separation of concerns，SoC），是将计算机程序分隔为不同部份的设计原则。每一部份会有各自的关注焦点。关注焦点是影响计算机程式程式码的一组资讯。关注焦点可以像是将程式码优化过的硬件细节一般，或者像实例化类别的名称一样具体。展现关注点分离设计的程序被称为模组化程序。模组化程度，也就是区分关注焦点，通过将资讯封装在具有明确界面的程序代码段落中。封装是一种资讯隐藏手段。资讯系统中的分层设计是关注点分离的另一个实施例（例如，表示层，业务逻辑层，数据访问层，持久数据层）。 关注点分离，是对只与「特定概念、目标」（关注点）相关联的软件组成部分进行「标识、封…

- ID: m05103
- 分类: learn
- 领域: 认知科学

## 定义

将一个复杂的系统拆分成互不重叠的模块，每个模块只关注一个特定的功能或方面。如HTML管结构，CSS管样式，JS管交互。 脚手架作用： 解构复杂度的手术刀。当生活乱成一团麻时，使用SoC：把"工作的事"、"感情的事"、"健康的事"物理隔离。不要在吃饭时想工作，不要在工作时处理感情。一次只处理一个关注点。

## 机制

复杂度来自关注点的纠缠。将系统按功能划分为边界清晰、互不重叠的模块，使每个模块只解决一个问题，可独立理解、修改而不波及其他，从而降低认知负荷与变更成本。

## 练习

1）列出系统涉及的关注点（结构、样式、交互、数据…）；2）按关注点划分子模块/层；3）定义清晰的接口与边界；4）各模块内部高内聚、之间低耦合。

## 脚手架用法

解构复杂度的手术刀。当生活乱成一团麻时，使用SoC：把"工作的事"、"感情的事"、"健康的事"物理隔离。不要在吃饭时想工作，不要在工作时处理感情。一次只处理一个关注点。

[阅读网页](https://thinkingmodels.site/entries/detail/m05103)
