SOLID: Принципы, которые спасут ваш код от хаоса

Привет, разработчики! Сегодня у нас на повестке дня загадочная аббревиатура SOLID. Нет, это не новый вид бетона, хотя ваш код действительно станет надёжнее, если будете соблюдать эти принципы. SOLID - это 5 правил, которые помогут вам писать поддерживаемый, расширяемый и приятный для глаз код.

S - Single Responsibility Principle (Принцип единственной ответственности)

Что это значит: Один класс - одна задача. Не надо пытаться сделать из вашего класса швейцарский нож.

Пример:

SOLID: Принципы, которые спасут ваш код от хаоса

Что тут не так? Класс Report занимается и генерацией отчёта, и его сохранением. Давайте это исправим:

SOLID: Принципы, которые спасут ваш код от хаоса

Теперь Report отвечает за создание отчёта, а ReportSaver - за его сохранение.

O - Open/Closed Principle (Принцип открытости/закрытости)

Что это значит: Код должен быть открыт для расширения, но закрыт для модификации.

Пример:

SOLID: Принципы, которые спасут ваш код от хаоса

А если завтра скидка будет 20%? Давайте сделаем гибче:

SOLID: Принципы, которые спасут ваш код от хаоса

Теперь добавление новых скидок не требует изменения существующего кода

L - Liskov Substitution Principle (Принцип подстановки Барбары Лисков)

Что это значит: Дочерний класс должен дополнять, а не ломать поведение родительского.

Пример:

SOLID: Принципы, которые спасут ваш код от хаоса

Проблема: Пингвины нарушают принцип Лисков, ведь они не умеют летать. Лучше изменить структуру:

SOLID: Принципы, которые спасут ваш код от хаоса

Теперь пингвины никого не обманывают.

I - Interface Segregation Principle (Принцип разделения интерфейсов)

Что это значит: Не заставляйте классы реализовывать методы, которые они не используют.

Пример:

SOLID: Принципы, которые спасут ваш код от хаоса

Но если у нас есть робот?

SOLID: Принципы, которые спасут ваш код от хаоса

Теперь у робота нет ненужного метода eat().

D - Dependency Inversion Principle (Принцип инверсии зависимостей)

Что это значит: Модули верхнего уровня не должны зависеть от модулей нижнего уровня. Оба должны зависеть от абстракций.

Пример:

SOLID: Принципы, которые спасут ваш код от хаоса

Проблема: Компьютер напрямую зависит от реализации Keyboard.

SOLID: Принципы, которые спасут ваш код от хаоса

Теперь можно подставлять разные клавиатуры без изменения Computer.

Заключение

SOLID - это как пять волшебных ингредиентов для рецепта чистого кода. Если соблюдать их, ваш проект будет масштабироваться без боли. А если не соблюдать... ну, удачи с отладкой! 😁

1
Начать дискуссию