|
© 2026
Александр Легалов
Содержание
К чему пришли?
Основная идея рассмотрения принципов SOLID связана с сопоставлением подходов к разработке ПО, принятых при использовании ООП и ППП. При этом понятно, что применение технических приемов, предлагаемых 4П, в настоящий момент является беспринципным. Это связано с тем, что SOLID явно ориентирован на ОО решения. И хотя эти принципы предлагается переложить на архитектуры, разработка которых может вестись с использованием разных подходов [mr2018Мартин Р. Чистая архитектура. Искусство разработки программного обеспечения. — СПб.: Питер, 2018. — 352 с.], объектно-ориентированный запашок все равно остается. При подведении итогов забудем про архитетуры ПО и ограничимся рассмотрением того, как процедурно-параметрический подход отображается на технику кодирования и какие принципы при этом возникают.
- Принцип единственной ответственности (SRP) направлен на разделение по интерфейсам в соответствии с предметной направленностью. При этом исходные данные, используемые через каждый интерфейс и порождаемые от них объекты, обычно являются общими (в противном случае происходило бы естественное разделение). Использование ПП подхода изначально ведет к разделению обработки данных по отдельным функциям. Эти функции можно группировать в различные интерфейсы, включая повторное использование одних и тех же функций в разных интерфейсах. В PPC, как и в C, это можно сделать через заголовочные файлы. Если же появятся новые языки, поддерживающие 4П, то можно реализовать для этого соответствующую систему шлюзов (есть такие идеи). С позиций ПП подхода SRP можно рассматривать как Принцип целевой поддержки (Targeted support principle, TSP), целесообразного использования, целесообразной группировки, так как распределение функций не нужно в начале планировать, а достаточно собрать их в нужные интерфейсы без какого-то специализированного объединения по модулям или классам.
- Принцип открытости-закрытости (OCP) по сути связан с эволюционным расширением программы без изменения ранее написанного кода, что в свое время и привлекло мое внимание к "плюсам" (C++) и ООП. С этих позиций ПП подход обладает намного большей гибкостью, позволяя, за счет обобщений и обобщающих функций, собирать в альтернативы различные данные, путешествую по ним "туда и обратно". Обозвать его с этих позиций можно как Принцип эволюционного расширения (The evolutionary expansion principle, EEP).
- Я вообще не понял, что из себя представляет принцип Барбары Лисков (LSP). Особенно когда вместо внятного его описания и понятных примеров приводятся контрпримеры. Свое видение при этом я попытался воспроизвести. Исходя из написанного и применительно к ППП, я бы охарактеризовал его как Принцип сохранения старого поведения (The old behavior principle, OBP).
- Принцип разделения интерфейсов (ISP) для меня оказался чуть ли не самым загадочным и во многом напоминающим SRP. Правда, вместо разных предметных областей у клиентов и их разной функциональности акцент делается на общую функциональность и различные варианты доступа к ней. Но в целом оба похожи. С позицией ППП мало что изменяется. Реализуются разные функции над одним и тем же, используя для этого несвязанные друг с другом процедурные решения. Поэтому я бы назвал его Принципом разумного доступа (The reasonable access principle, RAP), при котором организация взаимодействия с одной и той же или слегка изменяемой но общей функциональностью осуществляется в зависимости от целесообразного включения тех или иных функций.
- Что касается Принципа инверсии зависимости (DIP). В целом внедрение для внедрения промежуточных ПП абстракций достаточно использовать в любой точке обобщения, навешивая на них различные альтернативы. Поэтому, как вариант, можно сформулировать Привет от принципа абстракций (Hi from abstraction principle!, HAP)!
Ну и в качестве вишенки. Раз у 4П появились свои принципы, то становится интересным: можно ли из используемых начальных букв сформировать, по аналогии с SOLID, какой-то свой слоган? У меня получилось слово OTHER. Вполне подходит к другой технике программирования. Конечно это подгонка, осуществленная анализом альтернатив с последующим их обобщением. Был и такой вариант как AGILE. Но уже имеется соответствующий манифест, провозглашающий свои принципы.
Прекрасно понимаю, что многие мои умозрительные заключения могут восприниматься как глумление на постулатами и незыблемыми "религиозными" принципами чистого кода и чистых архитектур. Но я решил, что при изложении возможностей 4П немного стёба и легкого троллинга не помешает. Слишком уж скучно просто так наблюдать над застоем идей в технике программирования, ожидая, когда ИИ или инопланетяне начнут исправлять положение...
Содержание
|