Недавно снова услышал такой вайб: все эти принципы - это только направление, и их можно не придерживаться. Когда их придумали, вообще был другой IT, и сейчас это все не актуально.
И таких людей не переубедишь. Приводи им примеры или нет - свой опыт им не передашь. Да и слушать у нас как-то стало не модно. У нас же все теперь гибко и "как договоритесь". И требовать каких-то стандартов отрасли - это уже абьюз… Например:
Без тестов - норм
Код стайл - давайте кто как хочет
Фреймворки и библиотеки - кому как нравится
Давайте сразу оптимизируем. Пишем RawSQL и т.д.
А как по мне - это анархия, а не гибкость и отсутствие бюрократии. Можете называть меня старпером. И да, мне нравится когда в машине есть механические кнопки, а не эти эти ваши планшеты в которых в движении фиг что ткнешь (кто-то может возразить - ведь у тебя же не nokia 3310 как телефон, но и требования к мобильным устройствам сильно изменились, при этом машина по прежнему машина, а не звездолет с автономным управлением и кинотеатром внутри).
В последнее время запрещёнограме я стал видеть, как люди начали делать своими руками ремонты в домах и квартирах. То ли это стало модно - ремонт DIY. То ли ремонт стал настолько дорогим, что даже прилично зарабатывающие люди подумали - а не сделать ли ремонт своими руками и с любовью? То ли и то, и другое.
Поэтому я решил попробовать доказать вам, что принципы разработки (почти как законы физики) меняются невероятно редко, именно на инструменте, с которым большинство людей имеет или будет иметь дело. Давайте рассмотрим принципы SOLID на основе перфораторной дрели.

SOLID — это аббревиатура, обозначающая пять ключевых принципов объектно-ориентированного программирования (ООП), разработанных Робертом Мартином, для создания понятного, гибкого и поддерживаемого кода (Single Responsibility, Open/Closed, Liskov Substitution, Interface Segregation, Dependency Inversion)
S - Single Responsibility Principle (Принцип единственной ответственности). Класс должен иметь только одну причину для изменения.
Для дрели: кнопка под указательным пальцем должна управлять только оборотами. Нельзя на неё вешать переключение на перфорацию. Сломаешь перфорацию - сломаешь дрель полностью.
O - Open/Closed Principle (Принцип открытости/закрытости). Сущности должны быть открыты для расширения, но закрыты для модификации.
Для дрели: хотите сверлить или штробить - вставляйте сверло. Хотите полировать - меняйте патрон и вставляйте его с правильной насадкой. Дорабатывать текущий патрон под новую насадку чревато тем, что перестанет работать то, что работало раньше. Например, патрон потерял центровку, и началась вибрация, или он перестал держать тонкие сверла...
L - Liskov Substitution Principle (Принцип подстановки Барбары Лисков). Классы-наследники не должны противоречить базовому классу.
Для дрели: перфораторная дрель должна иметь те же базовые функции, что имеет обычная дрель. Например, вы ожидаете, что в перфораторной дрели так же есть режим реверс. И в ней также можно менять сверла.
I - Interface Segregation Principle (Принцип разделения интерфейсов): Клиенты не должны зависеть от интерфейсов, которые они не используют.
Для дрели: существуют навороченные дрели. С пылесборником, с уровнем, c дополнительной ручкой, с подсветкой, разными режимами и многим другим. Если тебе нужен базовый инструмент для того, чтобы повесить полочку раз в пол года в гипсокартон - ручка и пылесборник будет тебе мешать. Или сломанный режим перфоратора может помешать воспользоваться дрелью в принципе (в виду сложности конструкции).
D - Dependency Inversion Principle (Принцип инверсии зависимостей). Модули верхних уровней не должны зависеть от модулей нижних уровней.
Для дрели: двигатель дрели не знает ничего о том, откуда он получает питание. Это для нее абстракция. Если это дрель от сети - то достаточно заменить стабилизатор, чтобы эта же дрель работала от другого напряжения. Если это аккумуляторная дрель от постоянного тока - то производитель может обновить линейку аккумуляторов, оставив интерфейс - и все будет работать как прежде.
А теперь вопрос - сколько ещё будут держаться эти принципы? Через сколько лет вы захотите чтобы производители дрелей перестали этого придерживаться? Например, чтобы управление дрелью стало сенсорным и в нём появилась плата, управляющая всем сразу? Я лично очень некомфортно буду себя ощущать в мире, где останутся только вот такие дрели...
Целью статьи было показать не универсальность этих принципов для разных сфер жизни (при разработки электроники скорее всего есть свои принципы), а их применимость спустя годы. Кстати, у меня есть ещё одна статья уже про реальный SOLID, но уже в проектировании архитектуры. Велкам к прочтению https://habr.com/ru/companies/qiwi/articles/697946/
P.S. Есть еще много принципов типа YAGNI / DRY / KISS, подходов к разработке типа чистого кода / TDD / BDD / DDD / экстремального программирования / гибкой разработки и тому подобного. На мой взгляд, появилось слишком много разработчиков, которые разрабатывают «чтобы работало» и отвечают на все эти принципы — «это все как договоритесь», потому что не погружались глубоко в предмет, а где‑то что‑то читали. Коллеги, будьте профессионалами. Читайте, изучайте, пробуйте
Комментарии (10)

BobovorTheCommentBeast
03.01.2026 11:47Время шло, а статьи про SRP не менялись.
Ну не работает SRP в такой формулировке. Т.к. она начинает зависеть уже от самой формулировки ответственности. По ней у кнопки уже 2 ответственности, включать дрель и выключать дрель, а если "включение" в нашем "сленге" подразумевает и отключение -- уже одна. А кнопка должна еще и сама отжиматься, уже три!SRP это про то, что кнопка для пальца, а не для bluetooth активации с мобильника и ответственна за свое поведение перед пальцем. И что если хочешь ее еще ногой включать, делай еще кнопку. И в этом месте аналогия с ИРЛ рушится, т.к. в ИРЛ инструментах как раз будет Multi responsibility для удобства.

lexus1990 Автор
03.01.2026 11:47Конкретизируя для разработки SRP я воспринимаю так - причина для изменения - это конкретная роль пользователя в продукте. Если класс расчета стоимости приходится менять и по просьбе маркетолога и по просьбе бухгалтера - это плохой класс...

Grey83
03.01.2026 11:47у кнопки на фотке есть ещё блокировка в нажатом состоянии
а ещё выше толкателя кнопки видно флажок реверса

MEGA_Nexus
03.01.2026 11:47В последнее время запрещёнограме я стал видеть, как люди начали делать своими руками ремонты в домах и квартирах.
А как это связано с принципами SOLID? Помогает ли Solid выполнять ремонт или нет?

lexus1990 Автор
03.01.2026 11:47Дрель помогает делать ремонт. Принципы проектирования (в данном случае ироничное применение SOLID) помогают оставаться инструментам надежными.

alexfadeev123
03.01.2026 11:47кнопка под указательным пальцем должна управлять только оборотами. Нельзя на неё вешать переключение на перфорацию.
Кто сказал? Переключение на перфорацию не выведено на кнопку не потому что кто-то там думал "тут должен быть принцип Single responsibility", а потому что чтобы вывести на кнопку переключение перфорации -- это надо очень сильно заморочится. Вобще на эту кнопку вешают и переключатель реверса и колёсико ограничения глубины нажатия.
Сломаешь перфорацию - сломаешь дрель полностью.
Сломаешь -- купишь новую или сдашь в ремонт. Или отремонтируешь сам, запчасти продаются.
Хотите полировать - меняйте патрон и вставляйте его с правильной насадкой.
А потом понадобилось поменять счётки или шнур питания, и вот вам уже нужно разбирать корпус дрели.
Например, патрон потерял центровку, и началась вибрация, или он перестал держать тонкие сверла...
Центровка и отсутствие вибрации в патроне перфоратора и так не очень.
перфораторная дрель должна иметь те же базовые функции, что имеет обычная дрель.
Вобще нет. Это два разных инструмента для разных задач. Не верите? Ну попробуйте просверлить аккуратное тонкое отверстие перфоратором в металле.
Для дрели: существуют навороченные дрели.
Это вообще не понял в чём тут поинт. В том что обычному человеку можно продать дешёвый инструмент без удобных функций? Хотя на заводе корпуса штампуются одинаково и все формы уже есть и готовы...
двигатель дрели не знает ничего о том, откуда он получает питание.
Если это дрель от сети...
Если это аккумуляторная дрель...
Взаимоисключающие параграфы.
Короче как всегда аналогия натянута на глобус. Принципы солид офигенны и удобны пока не начинают мешать. На готовую дрель можно легко гатянуть как приципы СОЛИД так и любые другие... А вот когда перфоратор разрабатывали ни о каком СОЛИДе инженеры не думали, думали они совершенно о другом.

Grey83
03.01.2026 11:47Вобще на эту кнопку вешают ... колёсико ограничения глубины нажатия.
Только в случае, когда от того до какого уровня нажата кнопка зависит скорость вращения патрона.
Это два разных инструмента для разных задач.
Только если под словосочетанием «перфораторная дрель» подразумевался перфоратор, а не ударная дрель, которая скорее дрель, чем перфоратор.

Lewigh
03.01.2026 11:47И таких людей не переубедишь. Приводи им примеры или нет - свой опыт им не передашь. Да и слушать у нас как-то стало не модно".
Чисто для интереса. Вот Вы так сокрушаетесь что людей не переубедить. А Вам никогда не приходила мысль, хотя бы на долю секунды, что чисто гипотетически Вы можете быть не правы?
Поэтому я решил попробовать доказать вам, что принципы разработки (почти как законы физики)
А если ли у этих принципов явные и понятные всем а главное однозначные формулировки? Ну например что такое ответственность а как ее рассчитать для конкретного случая? Есть ли доказательства эффективности применимости данных принципов отличные от субъективного восприятия? Или основной показатель эффективности - это "я считаю оно работает у меня а значит работает у всех"?
Для дрели: кнопка под указательным пальцем должна управлять только оборотами. Нельзя на неё вешать переключение на перфорацию.
Не скажу за дрель, но в схожих условиях в оружии, спусковой крючок часто используют и для стрельбы и для переключения ведения режимов огня и как предохранитель и ничего.
L - Liskov Substitution Principle (Принцип подстановки Барбары Лисков). Классы-наследники не должны противоречить базовому классу.
Советую изучать лучше данный принцип. Там нет ничего про классы.
А теперь вопрос - сколько ещё будут держаться эти принципы? Через сколько лет вы захотите чтобы производители дрелей перестали этого придерживаться?
И очень хорошо, что инженеры когда проектируют различные решения, не забивают себе голову такими глупостями и догмами а проектируют реализацию исходя из требований и собственной смекалки.
Яркий пример из Второй мировой - зенитная артиллерия. Эта та которая по самолетам стреляет. Вместо того чтобы всякие единственные ответственности соблюдать, инженеры сделали орудие которое может стрелять и по земле а более того были сделаны противотанковые снаряды. И более того, впоследствии оказалось что зенитное орудие едва ли не лучшее противотанковое средство. После чего в Германии и СССР стали ставить слегка модифицированные зенитные орудия на танки. А вот если бы знали про SOLID не страдали бы видиом фигней и делали зенитные орудия которые могут стрелять только по самолетам.

Grey83
03.01.2026 11:47хотите сверлить или штробить - вставляйте сверло. Хотите полировать - меняйте патрон и вставляйте его с правильной насадкой.
Штробить только перфоратором выдет и там свой патрон со своим способом крепления рабочего органа. У обычной дрели и ударной дрели патрон совсем иначе сделан, потому что там другие задачи.
Хотите полировать - меняйте патрон и вставляйте его с правильной насадкой.
Тут патрон обычно менять не требуется: существует множество насадок, которые стыкуются со штатным патроном для передачи вращающего момента. И позволяют превратить дрель в эрзац-УШМ, цепную пилу или ещё много чего.
Есть ли такое для перфоратора я без понятия.Если это дрель от сети - то достаточно заменить стабилизатор, чтобы эта же дрель работала от другого напряжения.
Нужно менять статор такой дрели, скорее всего, т.к. там питание почти напрямую от сети идёт, емнип. А обороты меняются симистором.
zo0Mx
Прочитал статью и поймал себя на мысли: это очередное нытьё, *престарелый* бухтёж и, в целом, типовая нудиловка.
А потом подумал...
1) не ИИ-сгенерённый контент и то хорошо.
2) не очередной инфо-мусор для "тончайшего" пиара tg и то замечательно.
Хоспаде... как же у меня снизился ценз на качество контента за последнее время... Хотя, что это за фантазии такие - искать контент (да ещё и качественный!) на... Хабре!
рофл, да и только)
ЖЖ, Вк, Хабр, Пикабу - в одном пантеоне "успешных" проектов. Кто там следующий