【问题标题】:The Reuse/Release Equivalence Principle (REP)重用/发布等效原则 (REP)
【发布时间】:2008-09-15 14:02:00
【问题描述】:

什么是重用/发布等效原则,为什么它很重要?

【问题讨论】:

  • 猜你想要自学者徽章 :-)
  • 嗯,那很好。但我这样做的主要原因(并询问有关 OO 设计原则的其他问题)是为了帮助网站播种信息,并希望提高对这些原则的认识。我经常对我遇到的从未听说过他们的开发者的数量感到震惊。
  • 好的,很公平。我删除了我的答案,惩罚你从名单上掉下来。 (无论如何,这里应该是一个评论。)
  • 干杯。您认为播种此类信息的最佳方式是什么?自己立即回答问题(这似乎会阻止其他人贡献甚至查看,就像这里一样),或者只是让社区做出回应(这似乎会产生更多的观点和回复)?

标签: oop language-agnostic


【解决方案1】:

重用/发布等效原则 (REP) 说:

重用单元就是释放单元。有效的重用需要跟踪来自变更控制系统的发布。包是重用和发布的有效单元。

重用的单位就是释放的单位

不应通过将代码从一个类复制并粘贴到另一个类来重复使用代码。如果原作者修复了代码中的任何错误,或添加了任何功能,您将不会自动获得收益。您必须找出更改的内容,然后更改您的副本。你的代码和原来的代码会逐渐发散。

相反,应通过在代码中包含已发布的库来重用代码。原作者保留对其进行维护的责任;您甚至不需要查看源代码。

有效的重用需要跟踪来自变更控制系统的发布

库的作者需要用某种编号或名称来标识版本。这允许库的用户识别不同的版本。这需要使用某种发布跟踪系统。

包是重用和发布的有效单元

也许可以使用一个类作为重用和发布的单元,但是在一个典型的应用程序中有这么多的类,发布跟踪系统跟踪它们会很麻烦。需要一个更大规模的实体,这个包很好地满足了这个需求。

另请参阅 Robert Martin 在Granularity 上的文章。

【讨论】:

【解决方案2】:

来自 Robert Martin 的 Clean Architecture。

重用/释放等效原则 (REP) 是一个看似 显而易见,至少事后看来。想要重用软件组件的人 除非这些组件通过 发布过程并获得发布编号。

这不仅仅是因为没有版本号,就没有办法 确保所有重用的组件相互兼容。而是它 也反映了软件开发人员需要知道新版本何时发布的事实 即将到来,以及这些新版本将带来哪些变化。

开发人员收到有关新版本的警报并做出决定的情况并不少见, 根据该版本中所做的更改,继续使用旧版本 反而。因此发布过程必须产生适当的通知 并发布文档,以便用户可以做出明智的决定 何时以及是否集成新版本。

【讨论】:

  • 如果原则是人们只会使用正确跟踪的组件,为什么他们称之为重用/发布等效原则。什么相当于什么?
  • 重用单元由发布单元定义。您不应使用发布中的单个类并将依赖项跟踪添加到该类的更改中。相反,您依赖于整个软件包的发布版本。同样,不鼓励您使用 SNAPSHOT 版本。非常常见的“[1.5.*)”版本模式也是这种模式的一种味道。虽然您仍然使用已发布的包进行重用,但您不能保证在两个构建中使用相同的版本。相反,使用确切的版本号来实现重用。
猜你喜欢
  • 1970-01-01
  • 2018-02-20
  • 1970-01-01
  • 2013-05-02
  • 2019-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-02
相关资源
最近更新 更多