Встречается на собеседованиях • сегодня

Что такое SOLID

SOLID — это набор принципов объектно-ориентированного проектирования, направленных на создание гибкого, поддерживаемого и расширяемого кода:

  1. Single Responsibility (единственная ответственность) — класс должен решать только одну задачу.
    csharp
    // Плохо: класс и логирует, и сохраняет данные
    class UserManager {
        void Save(User user) { /*...*/ }
        void Log(string message) { /*...*/ }
    }
  1. Open-Closed (открытость/закрытость) — классы должны быть открыты для расширения, но закрыты для изменений.

    csharp
    abstract class Shape { public abstract double Area(); }
    class Circle : Shape { /*...*/ } // Расширение без изменения Shape
  2. Liskov Substitution (подстановки Лисков) — наследники должны заменять родителей без нарушения логики.

    csharp
    // Наследник Bird не должен выбрасывать исключение в методе Fly(), если базовый класс его не предусматривает.
  3. Interface Segregation (разделение интерфейсов) — много специализированных интерфейсов лучше одного общего.

    csharp
    interface IPrinter { void Print(); }
    interface IScanner { void Scan(); } // Вместо IPrinterScanner
  4. Dependency Inversion (инверсия зависимостей) — зависимости на абстракциях, а не на деталях.

    csharp
    class OrderService {
        private readonly ILogger _logger;
        public OrderService(ILogger logger) { _logger = logger; } // Внедрение зависимости
    }
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы