Logo David Burdelak
Słownik · Programowanie i wzorce projektowe

Co to jest zasada otwarte-zamknięte?

Ostatnia aktualizacja:

Zasada otwarte-zamknięte (Open-Closed Principle, OCP) to druga z zasad SOLID. Głosi, że moduły powinny dać się rozszerzać o nowe zachowania bez zmieniania istniejącego, przetestowanego kodu. Sformułował ją Bertrand Meyer w 1988 roku.

Jak ją zrealizować?

Kluczem są abstrakcje: interfejsy i klasy bazowe. Zamiast rozbudowywać długą instrukcję switch o kolejny typ płatności, tworzy się nową klasę implementującą wspólny interfejs. Istniejący kod nie zmienia się, a nowa funkcja dochodzi jako kolejna implementacja. Dobrym narzędziem jest wzorzec Strategia.

Korzyści

Zmniejsza ryzyko wprowadzenia błędów do działających fragmentów i ułatwia rozbudowę. Zespół może dodawać funkcje bez kolizji z istniejącym kodem.

Uwagi

Nie da się przewidzieć wszystkich kierunków zmian, a przedwczesne tworzenie abstrakcji przypomina nadmierne komplikowanie. Zasadę stosuje się tam, gdzie zmiany w danym miejscu się powtarzają.

Przykład w kodzie sklepu

Moduł naliczający rabaty z instrukcją warunkową dla każdego rodzaju promocji trzeba edytować przy każdej nowej akcji. W wersji zgodnej z zasadą każda promocja to osobna klasa z tym samym interfejsem, a moduł jedynie ją wywołuje. Dodanie rabatu „trzeci produkt gratis” oznacza napisanie nowej klasy, bez zmian w działającym kodzie. Zasada wiąże się z polimorfizmem: wywołujący nie zna konkretnych typów, tylko ich wspólny kontrakt.

Ma to bezpośredni związek z praktykami, na których opiera się pisanie czytelnego i zrozumiałego kodu.

Zobacz w praktyce

Powiązane pojęcia

Wszystkie hasła z kategorii Programowanie i wzorce projektowe