Я знаю, что слепо следовать любой «лучшей практике» все равно может привести к вонючей куче дерьма, которая строго придерживается лучшей практики. Принципы SOLID таковы, что принципов. Они не применяются ко всем ситуациям, но они все еще очень хорошие эвристики для поиска возможных улучшений в вашем коде.Есть ли какие-либо инструменты статического анализа, которые будут сообщать, насколько внимательно соблюдаются принципы SOLID?
Недостатком является то, что они когда-то требуют глубокого анализа исходного кода для их применения. Я, как и большинство программистов, постоянно наблюдает за более эффективными способами делать вещи, поэтому мне любопытно, слышал ли кто-нибудь об инструменте анализа, который пытается проверить применение принципов SOLID (или их отсутствие).
SRPЕдиный Ответственность Принцип
класс должен иметь только один повод для изменения.
OCPоткрытого Closed Принцип
Программные объекты (классы, модули, функции и т.д.) должны быть открыты для расширения, но закрыты для модификации.
LSPЛисков принцип замещения
Подтипы должны быть взаимозаменяемыми для их базовых типов.
ISPИнтерфейс Сегрегация Принцип
Клиенты не должны быть вынуждены зависеть от методов, которые они не используют. Интерфейсы принадлежат клиентам, а не иерархам.
DIP Dependency Inversion Принцип
Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций .
-из Agile принципы, шаблоны и практики
* Недостатком их является то, что они когда-то требуют глубокого анализа исходного кода для их применения. * Если анализ кода (независимо от того, насколько глубокий) будет достаточным, такие инструменты будут возможны, однако, посмотрите на код недостаточно. – Wolf
@ Вольф В контексте этого конкретного предложения я имел в виду анализ человека, основанный на понимании, понимании и интуиции. –
Вы имеете в виду шаблоны, которые извлекаются из анализа человеческого кода, чье присутствие позже проверяется автоматическим способом? – Wolf