Абсолютно есть преимущества.Фактически, два принципала (BDD и Open / Closed) предназначены для разных целей.BDD предназначен для руководства процессом разработки, и в этом его преимущества (сокращение сроков, создание более качественного кода и т. Д.).Open / Closed предназначен для выполнения в процессе разработки, но помогает в обслуживании.
Преимущества BDD легко понять.Более короткие сроки начальной разработки означают меньшую стоимость проекта в целом, верно?Неправильно.Основываясь на Правиле 60/60 , 60% стоимости проекта приходится на его обслуживание (а 60% этой стоимости - на изменение требований после развертывания).Поэтому, несмотря на то, что на начальном этапе разработки выгодно экономить, большую экономию необходимо иметь при обслуживании.
И именно в этом случае принцип Open / Closed окупится.Следуя этому принципу, вы сэкономите много времени на обслуживании (поскольку вам не нужно отслеживать неработающие юнит-тесты, потому что вы меняете функциональность метода).
И принцип Open / Closedне столько предотвращение регрессий, сколько предотвращение изменения API, за которым почти невозможно идти в ногу.Если вы заметили, хорошие API никогда не меняются.Они могут быть расширены.Части могут быть устаревшими.Но вы никогда не увидите, чтобы setFoo(string bar)
изменилось на setFoo(int bar)
.Это то, что есть Open / Closed для предотвращения ...