知识卡片
REP复用/发布等同原则:软件复用的最小粒度应等同发布粒度
内容
复用/发布等同原则(REP)的表述很简练:软件复用的最小粒度应该等同于其发布的最小粒度。这条原则看似不言自明——想复用某个组件,就必须要求它的开发由某种发布流程来驱动、有明确的发布版本号,理由有两层:一是没有版本号就无法保证复用的多个组件之间彼此兼容;二是软件开发者必须知道组件的发布时间以及每次发布带来了什么变更,才能在收到新版本通知后决定继续用旧版本还是升级——因此组件的发布过程还必须产生恰当的通知和发布文档,让用户能据此做出有效的升级决策。从软件与架构设计的角度看,REP还意味着组件内的类与模块必须彼此紧密相关、有共同的主题或大方向,一个组件不该由一组毫无关联的类和模块拼凑而成。但这条原则本身有个软肋:它没有清晰定义”到底该如何把类和模块组合成组件”,只是笼统地要求组件内容”合理”——违反它的直接后果就是有人抱怨你的组件划分”不合理”,进而质疑你的架构能力,但这种质疑本身缺乏可操作的判定标准。这个软肋恰好留给了后面两条原则(CCP和CRP)从相反的角度加以弥补。
参考来源
- 位置:《架构整洁之道》第13章《组件聚合》"复用/发布等同原则"(源文件:_epub-src/text/part0013_split_002.html)
- 结论依据:原文给出REP的定义(复用粒度等同发布粒度),说明版本号和发布文档对保证兼容性、支持升级决策的必要性,并指出该原则缺乏"如何组合类与模块"的清晰标准这一薄弱之处,需要CCP和CRP从相反角度补偿,直接支撑本卡片结论。
- 原始内容:软件复用的最小粒度应等同于其发布的最小粒度……组件的发布过程还必须要能够产生适当的通知和发布文档……该原则没有清晰地定义出到底应该如何将类与模块组合成组件……CCP和CRP会从相反的角度对这个原则进行有力的补偿。