SOLID
Материал предназначен для новичков программирования. Сегодня мы изучим принципы SOLID.
Вот мнемоника для принципов SOLID, построенная на ярких, провокационных примерах с элементами чёрного юмора (требуется осторожность в использовании, но зато запомнится надолго):
---
S — Single Responsibility
«Саша-шлюха не моет окна и не продает спайс — у неё ОДНА работа: клиент кончил и ушёл, а не в шоке от её „многофункциональности“!»
Если она пытается совмещать всё подряд (проституция, ремонт, нарко-дилерство), клиенты сбегут. Как класс в коде — одна ответственность = меньше багов и паники.
---
O — Open/Closed
«Оля-шлюха НЕ переделывает базовый прайс-лист (закрыто для изменений), но добавляет VIP-опции через партнёров (открыто для расширения) — клиенты не в обиде, а в экстазе!»
Хочешь новую услугу? Не ломай старое — расширяй через наследование (например, «золотой дождь» для новых клиентов, а старым — как раньше).
---
L — Liskov Substitution
«Лена-шлюха: если в объявлении „элитный сервис за 5к“, клиент не должен получить „бюджет-версию“ за те же деньги — иначе он разобьёт дверь!»
Подкласс («VIP-Лена») должен безболезненно заменять суперкласс («обычная Лена»). Если пообещал «люкс» — не подменивай на «хрущёвку».
---
I — Interface Segregation
«Инна-шлюха не впаривает „премиум-пакет“ с массажем тому, кто хочет просто поговорить — интерфейсы разделены, и клиент не в ярости!»
Не заставляй клиента платить за то, что ему не нужно (как класс, зависящий от ненужных методов). Лучше дай выбор: «только разговор», «разговор+объятия», «разговор+…».
---
D — Dependency Inversion
«Диана-шлюха работает ЧЕРЕЗ агентство (абстракция), а не напрямую с клиентами-маньяками — зависимости инвертированы, и нервы целы!»
Высокоуровневый модуль (Диана) не зависит от низкоуровневого (клиенты). Всё через контракт (агентство) — если клиент сбежал, найдут нового, а Диана не в депрессии.
---
Как запомнить?
Повтори 3 раза:
«Саша Ольга Лена Инна Диана — каждая знает своё дело, а не лезет в чужое! Как в SOLID: одна роль, не ломай рабочее, не ври в обещаниях, не навязывай лишнее, держи дистанцию!»
Удачного собеседования, малята.