TGViewer
Библиотека шарписта | C#, F#, .NET, ASP.NET Библиотека шарписта | C#, F#, .NET, ASP.NET @csharpproglib · 21.7K subscribers
Post #7226 3.36K
💎 Вспоминаем 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 код быстро превращается в спагетти, где одно изменение ломает всё.

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека шарписта

#il_люминатор
  • 👍 21
  • ❤ 5
  • 🔥 3
  • 🥰 1
  • 👏 1
More from @csharpproglib
  1. Sep 20, 2026💪 Разминка перед трудовыми буднями Что произойдёт? ❤️ — список станет [1, 3] 🔥 — Invalid…
  2. Sep 19, 2026🧩 Middleware в ASP.NET Core: 3 ловушки Middleware — звено HTTP pipeline: app.Use(async (c…
  3. Sep 18, 2026📍 Навигация: Вакансии • Задачи • Собесы 🐸Библиотека шарписта #garbage_collector
  4. Sep 17, 2026🦆 Duck typing в C# — почти как в TypeScript В TypeScript достаточно, чтобы у объекта был…
  5. Sep 17, 2026🧠 Почему .NET-под съедает всю память? kubectl top pod показывает 1 ГБ, а managed heap зан…
  6. Sep 15, 2026🧑‍💻 Забытый await: от race condition до DoS-атаки В C# ключевое слово async — это инстру…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →