Я знаю, что слепое следование любым «лучшим практикам» все равно может привести к вонючей куче дерьма, строго придерживающегося лучших практик. Принципы SOLID - это всего лишь принципы. Они применимы не ко всем ситуациям, но они по-прежнему являются очень хорошей эвристикой для поиска возможных улучшений в вашем коде.
Обратной стороной является то, что для их применения иногда требуется глубокий анализ исходного кода. Я, как и большинство программистов, постоянно ищу более эффективные способы работы. Итак, мне любопытно, слышал ли кто-нибудь об инструменте анализа, который пытается проверить применение принципов SOLID (или их отсутствие).
SRP Принцип единой ответственности
У класса должна быть только одна причина для изменения.
OCP Принцип открытого-закрытого
Программные объекты (классы, модули, функции и т. Д.) Должны быть открыты для расширения, но закрыты для модификации.
LSP Принцип замещения Лискова
Подтипы должны быть заменяемыми на свои базовые типы.
Интернет-провайдер Принцип разделения интерфейса
Клиентов не следует заставлять полагаться на методы, которые они не используют. Интерфейсы принадлежат клиентам, а не иерархиям.
DIP Принцип инверсии зависимостей
Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций.
-Из Agile Principles, Patterns and Practices Роберта К. Мартина.