Ага, я тоже, ища очередной пример красивой реализации какой простой вещи, периодически думаю подобный сервис сотворить. Но до текущего момента успокаивался, найдя очередной сайт сниппетов. Зачастую не столь удобный, как того хотелось бы.
Возможно, так-таки займусь. Реализация тогда будет на python/django, ибо просто и удобно. Да hightlight.js Сагалаевский для раскраски кода. Ну а хороший хостинг для всего этого уже есть, и даже не один ;o)
Единственная проблема как таки обеспечить пополнение базы именно, что лучшими реализациями всего на свете.
svn, trac они как бы сами собой разумеются для любого проекта.
Но вот выше и ниже говорят, что всё это уже есть. Надо будет для начала изучить все предложенные ссылки.
Ваш благородный порыв понятен. Но есть каталоги шаблонов в Интернете. И пусть Гугл покарает меня, если я не прав :)
Другое дело, что нет предела совершенству. И если вы сделаете проект, который бы собрал большое количество паттернов, то все бы вам сказали огромное спасибо!
Мне кажется, что для реализации идеи потребуется wiki + продуманная структура
хочется сделать именно каталог удачных архитектурных решений с кусочками кода
стартовым содержимым может стать код открытых проектов и фрэймворков с грамотными комментариями
я имею ввиду кусочную реализацию - посколько разные языки предоставляют разные выразительные средства, что может сильно повлиять на реализацию и даже на концептуальную часть шаблона
долог путь к освоению паттернов - их надо почувствовать - и лучше всего на актуальном примере - в книгах большинство примеров искуственные или из отдаленных областей на нетом языке - идея как раз хорошо проилюстрировать паттерны на разных языках и в разных задачах - чтоб каждый нашел вход для себя
смотрел читал - не очень удовлетворительно особенно на руском - подобный ресурс как раз бы мог пополнить википедию (можно было бы даже определения с лучшими примерами хранить в википедии)
Cистема прототипирования HolyGrail представляет собой организованный в программе Dreamweaver, процесс создания интерактивного HTML-прототипа c помощью заранее подготовленных сниппетов (паттернов проектирования). Кроме того, проектирующий менеджер не остаётся наедине с белым полем
открытого окна программы. Он получает типичный проект (связанные html
страницы с использованием шаблонов), usability guidlines (появиться немножко позже), поддержку от использующих эту же систему (коммьюнити в ЖЖ http://community.livejournal.com/ru_holy…).
Проектирующий менеджер оперирует паттернами проектирования, программист использует готовой "чистый" код который можно вставить сразу в проект.
На мой взгляд, конкретную реализацию паттернов на конкретном языке делать не стоит. В том и состоит гибкость паттернов, что их можно применить для той или иной задачи, то есть подход к решению в целом, без деталей. Зачастую и в языках программирования не находится нужных средств для точной реализации какого-либо паттерна, но это в принципе и не нужно.
Иначе получается примерно как просмотр фильма и затем чтение книги, по которой снят фильм. Все герои во время чтения будут представляться теми же актёрами, что и в фильме. Если же сначала читать, то и герои могут предстать совершенно другими.
Так что в книге Design Patterns самый корректный подход к реализации паттернов. Там не приводятся полные исходники для сложных паттернов, которые откомпилил, запустил и посмотрел. Хотя для Singleton вполне возможна конкретная реализация, но и к ней могут быть вопросы.
В итоге, сама идея такого сайта довольно неплохая, особенно если ориентироваться на новичков в работе с паттернами. То есть давать подробные описания паттернов, но не саму их "чистую" реализацию, иначе её будут тупо копировать. А вот рассматривать конкретные примеры программ, в которых используется несколько паттернов будет замечательно для начинающих осваивать сей предмет.
Удачи!
а никто не говорил про конкретную. А применение на типовых задачах было бы интересно.
Тут дело в другом. Это не несколько выходных.
Если у кого-то и правда есть больше свободного времени чем выходные + понимание того, что скорее всего придется делать все самому (сообщество не начнет просто так наполнять каталог), то вперед.
Есил я не ошибаюсь все это уже двести лет как написано.
Напр. Гради Буч. Объектно-ориентированный анализ и проектирование. с примерами приложений на С++. ВТОРОЕ ИЗДАНИЕ. Rational Санта-Клара, Калифорния. А также Мартин Фаулер, а также в Rational Rose встроен паттерно-делатель, но это для тех, кто понимает, что он делает.
А вообще паттерны — это зло. Это из той же оперы, что для любой задачи золотой ключик можно подобрать и ничего не делать.
Обратную сторону медали под названием "Паттерны проектирования" рассмотрел Джошуа Кириевски в книге "Рефакторинг с использованием шаблонов" (русское изд. Вильямс, 2006)
Чем выше уровень абстракции, тем меньше демонстрационное решение подходит для конкретных решений. Чем ниже уровень абстракций, тем больше нужна база и лучше навигация, чтобы найти подходящее демонстрационное решение.
Ну и не стоит забывать, что притянутые за уши решения не есть тру=)
я имел ввиду накопить множество примеров удачного применения шаблонов в типовых задачах (с частичной иллюстрацией кодом)- поскольку как говорил Гамма паттерны начинаешь ценить почувствовав боль от плохого дизайна и потом облегчение при выборе верного решения
постараюсь в скором времени изложить предложение более детально - основная идея - это движение не от общего к частному, а от знакомого наболевшего частного к общему. И наверно это должен быть каталог задач и их удачных решений (с иллюстрациями кодом) и аналитическими комментариями - так сказать школа архитекторов :)
Отличная идея.
Русских проектов, аналогичных sourcemaking.com мне не удалось найти.
Статей на эту тему предостаточно, удобный справочник с примерами и разъяснениями - то что нужно для воспитания молодых программистов в России!
Респект и уважение, если поднимешь такой проект.
Проект имел бы преимущество перед всеми выше представленными, если в нем будут представлены шаблоны в общем виде (использовать тот же UML) с подробными описанием. Потом на основе объектов, участвующих в паттерне, давать пользователю задать собственные типы данных и язык, собственно. Получислось бы что-то вроде Lazy Patterns Using. Т.е. программист пришел на сайт, выбрал нужный паттерн, задал типы, и получил готовый код. Дальше вставляешь в собственный проект и доводишь работу кода до ума.
паттерны 2.0 (решение типовых задач программиста)