3

Продолжение поста «SOLID Army»1

Не ошибается тот, кто ничего не делает.


Уважаемый @Cromathaar предложил более верную интерпретацию SOLID. Спасибо.


Позволю себе процитировать комментарий полностью:

SRP. Если товарищу майору нужно отдраить сортир, а прапору покрасить траву, то рядовому Пуле не следует делать и то, и другое во избежание конфликта интересов. Пусть один рядовой драит, а другой - красит.

OCP. Если прапору нужно прибить портрет генерала и убрать капусту на даче, ему должно быть все равно, что там умеют его солдаты. Он выдает солдату методички - одну, как прибивать, другую - как убирать. Солдат строго следует инструкциям и успешно прибивает и красит. Так мы закрыли нежную солдатскую психику от изменений (знаний о гвоздях и капусте), но открыли его функциональность как боевой единицы для расширений.

LSP. Прапору известно, что любой солдат должен по команде "шагам ааарш!" стать смирно. Если новобранец Бомба по команде "шагам ааарш!" садится срать, то это нарушение LSP, т.к. прапор справедливо ожидает, что по этой команде солдат должен отбивать плац, а не присаживаться.

ISP. Прапору должно быть строго похер, что рядовой Штык и швец, и жнец, и на дуде игрец. Если прапору нужно заштопать очко на панталонах, он должен только знать, что рядовой Штык владеет иглой и нитью, но ничего не обязан знать о серпах и нотах.

DIP. Товарищу майору нужно, чтобы в батальоне была дисциплина. Если он будет каждому объяснять, что такое дисциплина, то он будет зависеть от каждого конкретного солдата и его способностей к внушаемости. Вместо этого товарищ майор берет устав и строго наказывает каждому солдату следовать положениям этого устава. Теперь солдаты зависят от майора с уставом, а не майор - от солдат.