5

开放/封闭原则似乎是关于防止对象或方法的回归。鉴于您的代码已被测试覆盖,因为您正在练习 BDD,这似乎是一个多余的要求。此外,它似乎通过在 API 级别而不是语言级别要求可扩展性来引入额外的复杂性。

4

1 回答 1

6

绝对有好处。事实上,这两个主体(BDD 和 Open/Closed)是为不同的目的而设计的。BDD 旨在引领开发过程,这就是它的好处(缩短时间线、制作更高质量的代码等)。Open/Closed 旨在在开发过程中完成,但有助于维护。

BDD 的好处很容易掌握。更短的初始开发时间意味着整个项目的成本更低,对吧?错误的。根据60/60 规则,项目成本的 60% 来自维护它(而该成本的 60% 来自部署后的需求更改)。因此,虽然在初始开发阶段节省资金是有益的,但在维护期间节省的资金更多。

这就是开放/封闭本金将得到回报的地方。通过遵循该原则,您将节省大量维护时间(因为您无需跟踪损坏的单元测试,因为您更改了方法的功能)。

Open/Closed 原则并不是要防止回归,而是要防止几乎不可能跟上的不断变化的 API。如果您注意到,好的 API 永远不会改变。它们可能会延长。部分可能已弃用。但你永远不会看到setFoo(string bar)更改为setFoo(int bar). 这就是 Open/Closed 是为了防止...

于 2011-01-24T16:53:35.357 回答