tgoop.com/csharpproglib/6267
Last Update:
💎 Вспоминаем SOLID
SOLID — это 5 принципов объектно-ориентированного проектирования. Давайте повторим эту базу.
— Single Responsibility Principle (Принцип единственной ответственности)
Каждый класс должен иметь только одну причину для изменения.
Плохо: класс UserManager и сохраняет пользователя в БД, и отправляет email.
Хорошо: UserRepository хранит, EmailService отправляет письма.
— Open/Closed Principle (Принцип открытости/закрытости)
Классы должны быть открыты для расширения, но закрыты для изменения.
Новый функционал добавляем через расширение, а не переписывание старого кода.
Пример: вместо переписывания метода — создаём новый подкласс или внедряем стратегию.
— Liskov Substitution Principle (Принцип подстановки Барбары Лисков)
Объекты подклассов должны работать так же, как объекты родителя.
Если Square наследуется от Rectangle, он должен вести себя как прямоугольник, а не ломать ожидания.
Суть: наследование не должно рушить логику программы.
— Interface Segregation Principle (Принцип разделения интерфейсов)
Лучше много маленьких интерфейсов, чем один огромный.
Плохо: интерфейс IMachine с методами print(), scan(), fax().
Хорошо: IPrinter, IScanner, IFax. Каждый класс реализует только нужное.
— Dependency Inversion Principle (Принцип инверсии зависимостей)
Зависимости должны быть от абстракций, а не от конкретных классов.
Плохо: класс ReportGenerator напрямую вызывает MySQLDatabase.
Хорошо: ReportGenerator работает с интерфейсом Database, а уже конкретная БД подставляется снаружи.
Без SOLID код быстро превращается в спагетти, где одно изменение ломает всё.
💬 Пишите в комменты как вы объясняете, что такое SOLID
#буст