Правильная ссылка на эту страницу
http://az-design.ru/Support/SoftWare/l/GlassRob/03f20.shtml

ФАКТ 20

Факт 20
       Повторное использование паттернов проектировании — это решение проблем, сопутствующих повторному использованию кода.

Обсуждение
       До настоящего момента мы обсуждали повторное использование в довольно минорных тонах. Решение задачи повторного использования в мелком масштабе хорошо отработано и является таковым уже более 45 лет. Масштабное повторное использование - это практически неразрешимая задача, если не говорить о приложениях, решающих похожие задачи К тому же модификация многократно используемых компонентов часто затруднена и нецелесообразна. Так что же делать программисту, чтобы не начинать с нуля каждую новую задачу?
       Решая текущую задачу, программисты всегда вспоминали решение, найденное раньше. Они забирали распечатки кода, переходя с одной работы на другую, пока не пришло время коммерческого ПО (в 1970-х), когда различные положения корпоративного контракта и некоторые законы сделали эту практику запрещенной.
       Программисты, конечно, все равно так делают. Держат ли они решения в голове, уносят ли на диске или на бумаге, потребность в повторном использовании готовых решений слишком непреодолима, чтобы можно было совсем избавиться от этого. Мне как юридическому консультанту приходилось разбираться в последствиях подобных инцидентов.
       Эти перенесенные решения редко заимствуются дословно из старого кода. Чаще сохранение обусловлено концепциями проектирования, воплощенными в коде. На одной конференции лет двадцать тому назад Виссер [Visser, 1987] сообщил то, что большинство практиков знали и раньше: "Проектировщики редко начинают с нуля".
       Этим я пытаюсь сказать, что обсуждать повторное использование надо на другом уровне. Мы можем говорить о повторном использовании кода так, как мы делали это до сих пор. А можно говорить о повторном использовании результатов проектирования. Данный вид повторного использования стал чрезвычайно популярным в 1990-х. Идея была стара как само программирование, но все же, обретя новую форму "паттернов проектирования", она внезапно обрела и новую применимость (и новое признание). Паттерны проектирования, подробно определяемые и рассматриваемые в самой первой книге на эту тему [Gamma, 1995], мгновенно завоевали доверие как в среде практикующих специалистов, так и у теоретиков.
       Что такое паттерн проектирования? Это описание некой задачи, которая повторяется снова и снова и сопровождается ее проектным решением. Паттерн имеет четыре неотъемлемых элемента: наименование, описание случаев, когда решение следует применять, само решение и последствия его применения.
       Почему паттерны так быстро прижились в программировании? Практики узнали в них то, что они привыкли делать, только преподнесенная обертка была новой, и обставлено второе пришествие было с новой помпой. Теоретики признали, что паттерны это в некотором смысле более интересная концепция, чем повторное использование кода, а именно в том смысле, что они затрагивали модель проектирования - нечто более абстрактное и концептуальное, чем код.
       Появлению паттернов сопутствовало оживление, но совсем не очевидно, что именно они были главной причиной изменения сложившегося образа действия. Пожалуй, причины было две.
       1. Разработчики-практики, как я уже заметил, и до этого делали подобные вещи.
       2. По крайней мере изначально большинство опубликованных паттернов представляли собой служебные (элементарные, не зависящие от предметной области) паттерны. Потребность в паттернах, специфичных для предметной области, постепенно начинает признаваться и удовлетворяться.
       Из данного факта есть самостоятельное следствие.

Паттерны проектирования порождаются практикой, а не теорией.

       Гамма и его коллеги [Gamma, 1995] отдают должное роли практики, говоря примерно так; "Ни один паттерн проектирования в данной книге не описывает новую или непроверенную модель ...[они] применялись не один раз в различных системах" и "проектировщики-эксперты ..повторно используют решения, доказавшие свою эффективность в прошлом". Это крайне интересный случай опережения теории практикой. Практика дала и представление о том, что позже было названо паттернами, и успешные результаты их применения. Раскрывая это, теория воплотила в структуру новую идею паттернов и способствовала появлению нового и более полезного способа их документирования.

Полемика
       Паттерны проектирования получили широкое признание. Образовалось сообщество теоретиков-энтузиастов, которые изучают и публикуют постоянно расширяющийся круг паттернов. Практики ценят их работу за ее организующую и структурирующую роль, а также за то, что в результате появляются новые паттерны.
       Однако измерить влияние этой новой работы на практику непросто. Мне не известны исследования, которые бы показывали, какая часть типичной программы приложения основана на формализованных паттернах. Некоторые исследователи говорят, что переизбыток паттернов (попытка применить их в тех программах, для которых они не подходят) может привести к появлению "непонятного ...кода, ...декораций на фасадах, построенных фабричным способом".
       Все же никто не сомневается в ценности этой работы, поэтому можно с уверенностью сказать, что паттерны проектирования представляют собой одну из самых убедительных и запоминающихся истин программирования.

Источники
       В последние годы появилось множество книг, посвященных паттернам. Среди них почти нет плохих: все они, вероятно, будут полезны. Большинство книг о паттернах представляют собой их каталоги, в которые паттерны объединяются по тематическому признаку. Самая важная книга о них, она же первая и ставшая классической, была написана Гаммой и соавторами. Эта книга стала известной вместе со своими авторами, получившими собирательное название "Банда четырех" (Gang of Four).

Ссылки
       — Gamma, Erich, Richard Helm, Ralph Johnson, and John Vlissides. 1995 Design Patterns. Reading, MA: Addison-Wesley.1 {Э.Гамма, Р.Хелм, Р.Джонсон, Дж.Влиссидес "Приемы объектно-ориентированного проектирования Паттерны проектирования". - Пер с англ - СПб Питер, 2001}
       — Visser, Willemien. 1987. "Strategies in Programming Programmable Controllers A Field Study of a Professional Programmers Proceedings of the Empirical Studies of Programmers: Second Workshop. Ablex Publishing Corp.


<<< Пред. Оглавление
Начало раздела
След. >>>



<<< Пред. Оглавление
Начало раздела
След. >>>

Дата последнего изменения:
Thursday, 21-Aug-2014 09:10:55 MSK


Постоянный адрес статьи:
http://az-design.ru/Support/SoftWare/l/GlassRob/03f20.shtml