《架构整洁之道》之单一职责原则

SRP是SOLID五大设计原则中最容易理解的一个。
很多程序员根据SRP这个名字想当然地认为这个原则就是指:每个模块都应该只做一件事。

没错,后者的确也是一个设计原则,即确保一个函数只完成一个功能。

将大型函数重构成小函数时经常会用到这个原则,但这只是一个面向底层实现细节的设计原则,并不是SRP的全部。

历史上,我们曾经这样描述SRP这一设计原则:
任何一个软件模块都应该有且仅有一个被修改的原因。

在现实环境中,软件系统为了满足用户和所有者的要求,必然要经常做出这样那样的修改。而该系统的用户或者所有者就是该设计原则中所指的”被修改的原因”。所以,我们可以这样描述SRP:
任何一个软件模块都应该只对一个用户或系统利益相关者负责。

这里的”用户”和”系统利益相关者”用词并不完全准确,它们很有可能指的是一个或多个用户和利益相关者,只要这些人希望对系统进行的变更是相似的,就可以归为一类(一个或多个有共同需求的人)。在这里,我们将其称为行为者。
所以,对于SRP的最终描述都变成了:
任何一个软件模块都应该只对某一类行为者负责。

上述提到的”软件模块”指的是一组紧密相关的函数和数据结构。

单一职责原则主要讨论的是函数和类之间的关系-但是它在两个讨论层面上会以不同的形式出现。

在组件层面,我们可以将其称为共同闭包原则,在软件架构层面,它则是用于奠定架构边界的变更轴心。

posted @   挑战者V  阅读(292)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述
历史上的今天:
2018-07-04 关于checkbox自动选中
点击右上角即可分享
微信分享提示