5 Stimmen

Gibt es Vorteile beim Befolgen des Open/Closed-Grundsatzes bei der Verwendung von BDD?

Das Open/Closed-Prinzip scheint sich darauf zu konzentrieren, Regressionen in einem Objekt oder einer Methode zu verhindern. Angesichts dessen, dass Ihr Code durch Tests abgedeckt ist, weil Sie BDD üben, scheint dies eine überflüssige Anforderung zu sein. Darüber hinaus führt es scheinbar zusätzliche Komplexität ein, indem es Erweiterbarkeit auf der API-Ebene erfordert, anstatt auf der Sprachebene.

6voto

ircmaxell Punkte 159431

Absolut gibt es Vorteile. Tatsächlich sind die beiden Prinzipien (BDD und Open/Closed) für verschiedene Zwecke konzipiert. BDD ist darauf ausgelegt, den Entwicklungsprozess zu leiten, und hier werden die Vorteile spürbar (kürzere Zeitpläne, höhere Code-Qualität usw.). Open/Closed hingegen soll im Entwicklungsprozess durchgeführt werden, aber bei der Wartung helfen.

Die Vorteile von BDD sind leicht zu erfassen. Kürzere Zeitpläne für die anfängliche Entwicklung bedeuten weniger Kosten für das gesamte Projekt, oder? Falsch. Basierend auf The 60/60 Rule stammen 60% der Kosten des Projekts aus der Wartung (und 60% dieser Kosten aus Änderungen der Anforderungen nach der Bereitstellung). Während es vorteilhaft ist, während der anfänglichen Entwicklungsphase Geld zu sparen, sind die größeren Einsparungen während der Wartung zu erzielen.

Und hier wird sich das Open/Closed-Prinzip auszahlen. Indem Sie diesem Prinzip folgen, sparen Sie sich eine Menge Zeit bei der Wartung (da Sie keine kaputten Unit Tests suchen müssen, weil Sie die Funktionalität einer Methode ändern).

Und das Open/Closed-Prinzip geht weniger darum, Regressionen zu verhindern, als vielmehr darum, eine sich ständig ändernde API zu verhindern, die fast unmöglich mitzuhalten ist. Gute APIs ändern sich nie. Sie können erweitert werden. Teile können veraltet sein. Aber Sie sehen nie, dass setFoo(string bar) zu setFoo(int bar) geändert wird. Darum geht es beim Open/Closed-Prinzip...

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X