|
© 2026
Александр Легалов
Содержание
OCP (Open-Closed Principle). Принцип открытости-закрытости
Сформулированный Бертраном Мейером в 1980-х годах принцип сводится к следующему: простая для изменения система должна предусматривать простую возможность изменения ее поведения добавлением нового, но не изменением существующего кода.
То есть, его суть заключается в том, что одним из критериев качества, на который следует обратить внимание, является поддержка ее эволюционного расширения. Для этого существуют различные технические приемы, которые зародились достаточно давно. В частности мой личный интерес с их изучением связан с работами по сквозной функциональности А.Л. Фуксмана [fuksmanФуксман А.Л. Технологические аспекты создания программных систем. – М.: Статистика, 1979. – 184 с.] и безболезненному расширению программ М.М. Горбунова-Посадова [gor-pasГорбунов-Посадов, М. М. Расширяемые программы. – М.: Полиптих, 1999.]. Эти идеи, а также практика кодирования, которой приходилось активно заниматься в лихие 90-е, привели к идеям эволюционной разработки программ, воплощенным в 4П.
По этим причинам описание данного принципа на основе сопоставления ОО и ПП примеров выглядит повтором того, что уже было многократно описано. Сопоставление гибкости подходов для простых вариантов расширения функциональности программ приведено в тексте динамическом полиморфизме и эволюции. Результаты этого сопоставления представлены в итогах. Имитиация ОО паттернов проектирования с использованием ПП парадигмы в большинстве случаев также демонстрирует более гибкое расширение программ за счет используемого ПП полиморфизма в сочетании с внешними функциями. При этом даже достаточно хаотичное и "бездумное" расширение программы при использовании ППП позволяет неплохо поддерживать Принцип открытости и закрытости.
Есть конечно ситуации, модификации программных решений, связанных, например, не только со структурной композицией, но и алгоритмическими изменениями, когда приходится менять ранее написанный код. Но эти ситуации уже не зависят от применяемых парадигм. Исходя из этого я считаю описание Принципа открытости-закрытости с позиций процедурно-параметрической парадигмой программирования закрытым. Желающие могут оспорить мою позицию.
Содержание
|