oop - 使用 BDD 时遵循开放/封闭原则有什么好处吗?

标签 oop language-agnostic bdd open-closed-principle

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

最佳答案

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

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

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

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

关于oop - 使用 BDD 时遵循开放/封闭原则有什么好处吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4781827/

相关文章:

python - 访问 header 名称时 OO 设计 : an object that can be exported to a "row",,不重复自己

language-agnostic - Code Golf : Hourglass

language-agnostic - 迭代器产生唯一的随机顺序?

unit-testing - 在 BDD 中测试应用程序状态

c++ - 我如何在其他类(或任何类)中使用抽象类?

java - 构造函数与 Java 中的普通方法有何不同?

ruby-on-rails - rspec Controller 测试错误 undefined method for nil :NilClass

c# - 这是一个糟糕的设计吗?

oop - 使用Java代码绘制协作图

language-agnostic - 为什么 ||= 不是有效的运算符?