Полагаю сам декоратор а так же причины по которым использование этого шаблона предпочтительней классическому наследованию в описании не нуждаются. При желании о нем можно прочитать в английской или русской википедии.
Поэтому сама статья — это всего лишь мои соображений по поводу одной из возможных реализаций этого шаблона а именно динамического декорирования в противовес широко распространенной технике статического декорирования.
Читать полностью »
Рубрика «Проектирование и рефакторинг» - 71
Реализация шаблона проектирования декоратор на PHP
2013-01-20 в 13:07, admin, рубрики: design patterns, php, Проектирование и рефакторинг, метки: design patterns, PHPСтроим прочный прозрачный frontend
2013-01-11 в 8:59, admin, рубрики: html, javascript, optimization, patterns, web, Веб-разработка, Проектирование и рефакторинг, метки: html, javascript, optimization, patterns, web, ооп, фронтендВ автомобиле, если нет сидения, то двигатель будет работать всё равно, а если двигатель сломается, то ручной тормоз от этого не пострадает. Это большая система независящих друг от друга модулей, которая продолжает работать после отказа одного из них и позволяет быстро определять проблемный модуль. Водителю же, в идеале, нет необходимости знать, как устроен мотор или тормоз, каждый модуль предоставляет ему простой интерфейс, такой, например, как педаль газа или кнопка включения фар.
В последующем тексте мы рассмотрим вариант абстракции над HTML кодом, который упрощает разработку и поддержку похожим принципом, благодаря слабым связям и модульности. Такой подход успешно используется автором в двух долгосрочных проектах, один из которых — сервис интернет-банкинга.
Читать полностью »
Так ли дорого прогрессивное улучшение?
2012-12-25 в 11:07, admin, рубрики: graceful degradation, Progressive enhancement, serenity, Веб-разработка, принципы проектирования, Прогрессивное улучшение, Проектирование и рефакторинг, проектирование сайтов, разработка, метки: graceful degradation, Progressive enhancement, serenity, принципы проектирования, Прогрессивное улучшение, проектирование сайтов 
В предыдущей статье рассматривалась теория и практика прогрессивного улучшения (progressive enhancement). В этой статье мы от идеологии перейдем к аксиологии и рассмотрим финансово-экономическую обоснованность применения прогрессивного улучшения.
В некоторых комментариях к предыдущей статье выражалось мнение, что использовать прогрессивное улучшение в реальной разработке не стоит. Причины сводились к излишней дороговизне: «На то, чтобы создать сайт в соответствии с этим подходом, нужно потратить слишком много времени, а это слишком дорого и не нужно ни заказчику (за такие деньги), ни исполнителю».
Читать полностью »
Ведение логов в полевых условиях
2012-12-25 в 8:25, admin, рубрики: ruby, логи, Программирование, Проектирование и рефакторинг, метки: ruby, логи, ПрограммированиеДоброго времени суток. Я хочу порассуждать о такой, казалось бы, банальной вещи, как логи.
Ни для кого не секрет, что логирование занимает важное место в отладке и поддержке практически любого мало-мальски сложного продукта. Что может быть проще — вставлять значение переменной куда-то в поясняющую строку, да скинуть в файл. Но тут могут ждать несколько подводных камней, на них я и остановлюсь.
Читать полностью »
Особенности обработки исключений в Windows
2012-12-24 в 12:23, admin, рубрики: c++, исключения, ооп, Проектирование и рефакторинг, метки: c++, try-catch, исключенияПрочитав недавний топик "Использование try — catch для отладки" решил все таки в качестве дополнения поделиться и своим опытом.
В этой статье предлагаю рассмотреть
получение callstack’а места, где было брошено исключение в случае работы со
структурными исключениями (MS Windows). В детали работы исключений вдаваться не будем, т.к. это тянет на отдельный цикл статей (для интересующихся рекомендую Рихтера, MSDN и wasm.ru). Конечно, есть много уже готовых проектов для генерации minidump’ов (например CrashRpt или google-breakpad), так что эта статья носит больше образовательный характер.
Что делать с полученным стеком вызовов — решать вам. Можно смотреть отладчиком, можно записать в файл и смотреть сторонней программой (для этого не забудьте записать список загруженных модулей с их адресами, а так же вам понадобятся отладочные символы).
Читать полностью »
Почему Pinball убрали из Windows Vista
2012-12-18 в 20:58, admin, рубрики: game development, windows, Windows Vista, Windows XP, Проектирование и рефакторинг, метки: 64 бит, Windows Vista, Windows XP 
Один из разработчиков Microsoft объяснил, почему замечательную игру Pinball не включили в состав Windows Vista. Ходили слухи, что это было сделано по юридическим причинам. Но нет, причины сугубо технические. Оказывается, Pinball просто не смогли портировать 64-битную платформу.
Читать полностью »
Ограничивая абстракции (.NET, ASP.NET MVC)
2012-12-06 в 21:31, admin, рубрики: .net, asp.net mvc, repository, Программирование, Проектирование и рефакторинг .jpg)
Прошло почти три года с тех пор как я впервые написал о своём отказе от такой абстракции как репозиторий (Repository). С тех пор я практически не использовал никаких концепций репозитория в системах, которые мы разрабатываем. Я не убирал из проектов уже существующие репозитории, но теперь я просто не нахожу в них никакой ценности в качестве абстракций.
Читать полностью »
Количественная оценка понятности кода
2012-12-03 в 17:06, admin, рубрики: code review, Проектирование и рефакторинг, рефакторинг, Совершенный код, метки: code review, рефакторинг 
Принято считать, что понятность кода — вещь, во-первых, субъективная, а, во-вторых, — количественно не измеряемая. Существуют различные количественные метрики кода, но среди них метрики понятности нет. Чтобы машинно измерить понятность кода, нужен его семантический анализ, а это уже задача искусственного интеллекта.
Но давайте посмотрим на проблему с другой стороны. Что мы делаем, когда разбираемся с чьим-то кодом? Как происходит сам процесс изучения кода? Мы листаем функции, ищем определения переменных, классов, переходим от функции к функции, от файла к файлу.
О компонентах и интерфейсах. Java
2012-12-03 в 7:48, admin, рубрики: java, интерфейсы, компоненты, Программирование, Проектирование и рефакторинг, проектирование интерфейсов, метки: java, интерфейсы, компоненты, проектирование интерфейсовВступление
В предыдущей статье я написал о разных способах оформления интерфейсов к компонентам и сокрытия их реализации в C++.
В этой статье расскажу вкратце, как в Java отделить интерфейс от реализации, а реализацию скрыть.
Я не буду рассматривать компоненты разных там Java EE, я рассмотрю самые обычные jar-ники-библиотеки.
Итак.
Читать полностью »
Как стать миллионером до конца света или как продать голую идею за 18 дней (Часть 1)
2012-12-03 в 4:06, admin, рубрики: дневник, идея, информационная безопасность, прецедент, Проектирование и рефакторинг, стартап, управление проектами, яндекс, метки: дневник, идея, прецедент, стартап, яндексВ цикле статей я хочу описать пример продажи «голой идеи» (продукта без реализации и прототипа на момент продажи), а также создать подобный прецедент и поделиться всеми этапами своей работы в режиме реального времени.
Скажу сразу, что в конец света я не верю, но я верю в маркетинг и мне нравится катиться на волне всеобщего возбуждения.
Все началось с того, что я закончил работу над своим очередным проектом, который в момент написания данной статьи находится на стадии тестирования и «обкатки». Появилась масса свободного времени, которое я решил потратить на «межпроектный отдых», учебу и генерацию новых идей.
.jpg)
Читать полностью »
