Analysis Patterns 1.0 Help

1.6 Использование шаблонов

Паттерны — это новая разработка в области программного обеспечения. Мы все еще разрабатываем способы помочь людям узнать о шаблонах и использовать их в своей работе. Столкнувшись с большим количеством паттернов в этой книге, легко оказаться перегруженным.

Первое, что нужно сделать, — это получить общие сведения. После прочтения этой вводной главы я рекомендую прочитать введение к каждой главе книги. Оно даст вам представление о том, какие темы рассматриваются в ней. Конечно, вы можете продолжить чтение каждой главы, но я постарался написать книгу так, чтобы вам не пришлось читать каждую главу, чтобы извлечь из нее какую-то пользу. Если вы работаете в определенной области, вы можете прочитать пару глав, которые, по вашему мнению, могут быть вам полезны. Другой подход, который порой предлагается, — смотреть на диаграммы. Если что-то покажется вам интересным, прочитайте примеры. Они часто дают представление о том, будет ли данный паттерн полезен для вас. Таблица паттернов также выступает в качестве резюме, поэтому вы можете начать с нее или использовать ее позже, чтобы освежить прочитанное в памяти.

Выявив потенциально полезный паттерн, попробуйте его применить. Я обнаружил, что единственный способ по-настоящему понять, как работает паттерн, — это опробовать его на собственной проблеме. Вы можете сделать это мысленно, набросав конкретную модель на бумаге или попробовав накидать код. Постарайтесь сделать так, чтобы паттерн подходил, но не перестарайтесь. Возможно, вы обнаружите, что модель просто не подходит. Вы не зря потратили время — вы узнали кое-что о модели и, возможно, кое-что о проблеме. Если шаблон не совсем соответствует вашим потребностям, не стесняйтесь его изменить. Паттерны — это предложения, а не строгие предписания. Я отношусь к ним как к рецептам в кулинарных книгах: Они дают мне отправную точку, базовый план приготовления блюда. Однако я без колебаний адаптирую их к своим конкретным обстоятельствам. Как бы хорошо ни подходил шаблон, обязательно прочитайте его полный текст, чтобы иметь представление о его ограничениях и важных особенностях. Делайте это как до того, как попытаетесь его использовать, так и после того, как примените. Если вы узнаете что-то о шаблоне, чего нет в тексте, не проклинайте меня просто так — напишите мне по электронной почте (martin@martinfowler.com). Мне очень интересно узнать, как люди используют эти шаблоны.

Когда я использую паттерны в проекте, я должен учитывать точку зрения клиента. Некоторые клиенты не любят думать, что они похожи на других. Они считают себя очень уникальными и с подозрением относятся к чужим идеям. С такими клиентами я не раскрываю шаблоны. Если я вижу, что паттерн может быть применим, я использую его, чтобы легче определиться с вопросами. Эти вопросы вполне могут привести клиента к чему-то, что соответствует шаблону, но я делаю это косвенно, чтобы подтолкнуть его к размышлениям.

Другие клиенты рады тому, что я открыто использую паттерны, и успокаиваются, видя, что я повторно использую свои прошлые наработки. С такими клиентами я пробую паттерн на их глазах и внимательно расспрашиваю их, чтобы убедиться, что они довольны им. Важно дать им понять, что я не считаю их евангелием, и если им будет некомфортно, я попробую что-то другое. Опасность таких клиентов заключается в том, что они могут принять паттерны, не подвергая их достаточным сомнениям.

Шаблоны также важны для анализа как своих, так и чужих работ. Посмотрите на свои проекты, есть ли там похожие паттерны. Если вы их нашли, то попробуйте применить. Даже если вы считаете, что ваше решение лучше, используйте паттерны и выясните, почему ваше решение более подходящее. Я нахожу эту технику полезной для лучшего понимания проблем. Аналогичный процесс работает и при анализе чужих работ. Если вы обнаружили похожий паттерн, используйте его как платформу для того, чтобы задать вопросы о работе, которую вы рассматриваете: В чем ее сильные стороны по сравнению с шаблоном? Дает ли паттерн что-то, чего нет в рассмотренной модели, и если да, то важно ли это? Сравнивая рассматриваемые модели, с известными мне паттернами и обычно обнаруживаю, что этот процесс учит многому как о проблеме, так и о паттернах, поскольку я спрашиваю: «Почему это сделано именно так?». Удивительно, как много можно узнать, просто спросив «почему».

Написание книги всегда подразумевает определенный авторитет. Читателю легко воспринимать книгу как некое утверждение. Хотя у некоторых писателей может быть чувство уверенности в правильности того, что они говорят, у меня такой 100% уверенности нет. Эти шаблоны основаны на реальном опыте, и поэтому я уверен, что они будут полезны для вас. Однако я, как никто другой, с болью осознаю их ограниченность. Чтобы быть по-настоящему авторитетными, такие шаблоны должны быть проверены на многих приложениях — больше, чем позволяет мой опыт.

Это не значит, что такие шаблоны не принесут пользы. Они представляют собой результат тщательного обдумывания. Я надеюсь, что они помогут и вам. Главное — понимать, что они являются отправной точкой, а не пунктом назначения. Потратьте время на то, чтобы понять, как эти модели работают, но при этом обратите внимание на то, как они были разработаны, и на ограничения, которые они имеют. Не бойтесь двигаться дальше и разрабатывать новые и лучшие идеи. Когда я работаю с клиентом, я не принимаю шаблоны как евангелие, даже те, которые, как мне кажется, я изобрел. Требования каждого проекта заставляют меня адаптировать, дорабатывать и улучшать шаблоны.

Last modified: 16 January 2025