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

Какие знаешь принципы SOLID

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

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

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

    csharp
    // Нарушение: Square, наследующий Rectangle, ломает логику, если меняет ширину/высоту.
  3. Interface Segregation (ISP) — клиенты не должны зависеть от интерфейсов, которые они не используют.

    csharp
    // Лучше разделить на IReadable и IWritable вместо одного "грязного" интерфейса.
  4. Dependency Inversion (DIP) — зависимости должны строиться на абстракциях, а не на конкретных реализациях.

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