Непопулярное мнение про SOLID | 2022-06-04

В среде программистов хороший код прочно ассоциируется с принципами SOLID. Вот пример репозитория с программой изучения дизайна ПО и он начинается с SOLID.

Основная проблема на мой взгляд в том, что SOLID — это принципы. Согласно модели получения навыков от Дрейфуса — принципы полезны, когда ты уже опытный специалист. Потому что нужно уже хорошо ориентироваться в контексте, чтобы их правильно применять. Для новичков намного полезнее простые рецепты.

Например, Don't Repeat Yourself — правило, не требующее контекста. Увидел одинаковый код — выделил в процедуру. Да, иногда потом выясняется, что сделал себе неудобно. В следующий раз уже будешь умнее.

А вот Single Responsibility Principle прямых указаний не дает. Хочешь, у тебя класс User описывает пользователя, а хочешь — отдельные классы на его части: UserPermissions, UserActivity, UserProfile. В любом случае можно аргументировать что одна ответственность. Как хочу, так и ворочу и все по SOLID.

Мне кажется, что у программистов более развито желание выделить какие-то всеобъемлющие правила, чем в других специальностях. Типа «пиши так, чтобы комментарии были не нужны», «методы больше пяти строк нужно разделять». Хотя в написании текста вообще и кода в частности такие правила пожалуй плохо применимы.

#software