SOLID. Ясный, точный ответ.
- Single Responsibility Principle (SRP): Модуль должен иметь только одну причину для изменения.
- Open/Closed Principle (OCP): Программные сущности (классы, модули, функции) должны быть открыты для расширения, но закрыты для модификации. Полиморфизм часто используется для соблюдения этого принципа.
- Liskov Substitution Principle (LSP): Подтипы должны быть подставляемы вместо их базовых типов. Это означает, что объекты класса-наследника должны вести себя ожидаемым образом при использовании через ссылки