Почему спрашиваешь про SOLID?

«Почему спрашиваешь про SOLID?» — вопрос из категории ООП, который задают на 24% собеседований PHP Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

SOLID — это не просто теория, а практические принципы, которые напрямую влияют на качество и стоимость поддержки кода в долгосрочной перспективе. Когда я вижу, что кандидат их понимает, я понимаю, что он сталкивался с проблемами плохой архитектуры и знает, как их избежать.

Из моего опыта, нарушение SOLID приводит к конкретным проблемам:

  • Нарушение SRP (Single Responsibility): Класс Order, который и сохраняет себя в БД, и отправляет email, и считает скидки. При изменении логики отправки писем есть риск сломать расчет заказа. Я разделяю это на Order, OrderRepository, MailService и DiscountCalculator.
  • Нарушение OCP (Open-Closed): Большая цепочка if-else или switch для обработки разных типов платежей. Добавление нового типа (CryptoPayment) требует модификации существующего кода. Я решаю это через полиморфизм — абстракцию PaymentMethod и конкретные классы CreditCardPayment, PayPalPayment.

Конкретный пример из проекта (LSP — Liskov Substitution Principle): У нас была иерархия Document -> ReadOnlyDocument -> EditableDocument. Проблема возникла, когда код, ожидающий Document, вызывал метод save(), но ему передавали ReadOnlyDocument, который бросал исключение NotSupportedException. Это прямое нарушение LSP. Мы переработали архитектуру, введя интерфейсы IReadableDocument и IWritableDocument, чтобы контракты были четкими.

Понимание SOLID показывает, что разработчик думает не только о том, как написать код, но и о том, как его будут изменять и поддерживать другие люди через полгода.