FakiNyan написав:Схоже, шо приклад в книжці "Чиста архітектура" або якийсь неправильний, або я не з того боку його роздивлявся, і того я подумав, шо наслідок принципу і є головною ідеєю, закладеною в нього.
Так, пам'ятаю, як теж читав дядька Роберта і маю погодитись, приклади у нього дещо перевантажені. Для мене цей принцип про те, що якщо ви хочете додати нову або змінити вже наявну функціональність деякої сутності (класу, інтерфейсу тощо), створіть нову сутність, яка ці зміни втілить, замість внесення змін у вже наявну сутність. Тобто, це про зменшення ризиків, при впровадженні нового коду. І оскільки ви не змінюєте наявний код, ви можете бути впевнені, що він не буде зламаний.
Тобто все вірно
FakiNyan написав:Класи мають бути закритими для змін, але відкритими для розширення.
Закриті для змін - тобто наявний код слід змінювати лише для виправлення помилок.
Відкритими для розширення - тобто нові сутності можуть додавати та/чи повторно використовувати наявний функціонал.
Узагальнюючи, цей принцип, це лише порада про те, як можна додавати новий код не ламаючи старий так, щоб ваші користувачі не відчували болю у 5-й точці. Це і є основна ідея цього принципу.
FakiNyan написав:суть принципу саме в написанні класів і компонентів таким чином, аби їх не треба було потім змінювати
А, ось це більше виглядає як: "опишіть у двох словах, що таке OCP". З однієї сторони це так, але в реальності ви ніколи не можете знати, що може статися. І іноді вам все ж доведеться змінювати ваші сутності.