Принципи SOLID – це набір з пʼяти принципів в архітектурі програмного забезпечення та обʼєктно-орієнтованому програмуванні, що виконують функцію вказівок для написання чистого, підтримуваного та розширюваного коду. Кожна літера в абревіатурі SOLID означає інший принцип:
- Single Responsibility Principle (SRP) (Принцип єдиної відповідальності) – Цей принцип констатує, що клас повинен мати лише одну причину для зміни, тобто, клас повинен мати єдину відповідальність. Це допомагає зосереджувати класи та робить код простішим для розуміння та підтримування.
- Open/Closed Principle (OCP) (Принцип відкритості/закритості) – Принцип відкритості/закритості констатує, що сутності програмного забезпечення повинні бути відкритими для розширення, але закритими для зміни. Це заохочує проєктування модулів ПЗ у спосіб, що дозволяє додавати новий функціонал, не змінюючи існуючий код.
- Liskov Substitution Principle (LSP) (Принцип заміщення Лісков) – Принцип заміщення Лісков констатує, що обʼєкти батьківського класу повинні бути взаємозамінюваними іншими обʼєктами-наслідниками, не впливаючи при цьому на правильність програми. Це сприяє використанню наслідування та поліморфізму, в той самий час забезпечуючи стабільність поведінки ПЗ.
- Interface Segregation Principle (ISP) (Принцип розділення інтерфейсу) – Принцип розділення інтерфейсу припускає, що клієнти не повинні залежати від інтерфейсів, які цими клієнтами не використовуються. Замість створення великих інтерфейсів з багатьма методами, перевага повинна надаватись меншим та конкретнішим інтерфейсам, щоб сприяти послабленню залежностей.
- Dependency Inversion Principle (DIP) (Принцип інверсії залежності) – Принцип інверсії залежності констатує, що високорівневі модулі не повинні залежати від низькорівневих модулів, проте і ті, і інші повинні залежати від абстракцій. Це заохочує розʼєднання модулів та впровадження залежності (dependency injection), сприяючи спрощенню тестування та гнучкості у виборі імплементації.
Загалом дотримання принципів SOLID допомагає створити програмне забезпечення, що є модульним, підтримуваним та таким, що піддається змінам у вимогах та технологіях.
Оригінальна стаття – What are the SOLID principles of architecture?, переклад – Іванна Івченко, ревью – Іван Вільчавський. Зображення згенероване за допомогою DALL-E у ChatGPT.