Рубрика «software architecture»

Архитектура архитектуры архитектора - 1

Читать полностью »

Картинка для привлечения внимания: > Replay bug-10492; going back in time

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

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

Начинающие разработчики познакомятся с паттерном, а продвинутые, возможно, найдут трюк полезным.

Хотите узнать как это сделать? Прошу под кат.

Читать полностью »

Или Охота на Кракена. В предыдущих заметках (тут и тут) я делился своим Braindump на тему различных архитектурных стилей, в частности Model-View-Controller и Flux.

Я отметил, что не увидел в лице Flux какой-то революции, этот шаблон не что-то новое. Я увидел в нем схожесть с Reenskaug-MVC 1979 года. Также, я упомянул, что решил убрать из своего кода Redux (одна из реализаций Flux). Мне кажется, эти моменты необходимо пояснить более развернуто. Моей целью не было убедить читателя в том, что Flux надо называть MVC, так же я не хотел сказать, что redux-модуль плох и от него нужно полностью отказаться.

Так как же относится тогда к Flux?

Для начала надо определится что же такое Flux. Во-первых это определенно архитектурный стиль, при чем на на данный момент, уже не только для клиентских web-приложений. Во-вторых это набор четко определенных компонентов и терминов.
Читать полностью »

Как и ожидал, правило 8 о том, что не тестируем алгоритм методов в статье "Правила внедрения TDD в старом проекте" вызвало больше всего вопросов «как» и «зачем». В момент составления прошлой статьи мне показалось это очевидным, поэтому не остановился детальнее на этом моменте. Но т.к. вопросов возникло много, хочу описать своё видение. Поэтому под катом будет небольшой пример кода и два примера того, как его можно было бы протестировать.
Читать полностью »

Статья «Скользящая ответственность паттерна Репозиторий» подняла несколько вопросов, на которые очень сложно дать ответ. Нужен ли репозиторий, если абстрагироваться от технических деталей полностью невозможно? На сколько сложным репозиторий может быть, чтобы его написание оставалось целесообразным? Ответ на эти вопросы различается в зависимости от акцента, который делается при разработке систем. Наверно, самый сложный вопрос: нужен ли, вообще, репозиторий? Проблема «текучей абстракции» и рост сложности кодирования с увеличением уровня абстракции не позволяют найти решение, которое удовлетворяло бы оба лагеря. Например, в репортинге intention design приводит к созданию большого числа методов для каждого фильтра и сортировки, а generic решение создает большой оверхед по кодированию. Продолжать можно бесконечно…

Для более полного представления я взглянул на проблему абстракций со стороны применения их в уже готовом коде, в legacy code. Репозиторий, в таком случае, нас интересует только, как инструмент для достижения качественного и безбажного кода. Конечно, этот паттерн — не единственное, что необходимо для применения TDD практик. Наевшись «невкусной еды» в нескольких больших проектах и наблюдая за тем, что работает, а что нет, я вывел для себя несколько правил, которые мне помогают следовать TDD практикам. С удовольствием выслушаю конструтктивную критику и иные приёмы внедрения TDD.
Читать полностью »

О боже, ещё один пост о Inversion of Control

Каждый более-менее опытный программист встречал в своей практике словосочетание Инверсия управления (Inversion of Control). Но зачастую не все до конца понимают, что оно значит, не говоря уже о том, как правильно это реализовать. Надеюсь, пост будет полезен тем, кто начинает знакомится с инверсией управления и несколько запутался.

Читать полностью »

Software 3.0: тихая революцияКоторый год все спрашивают всех о том, что же будет “the next big thing”. Что будет после веба, социальных сетей и облаков? По-моему, ответ валяется у нас под ногами, но мы никак не хотим его замечать. Просто потому что он не совсем такой, как нам нравится. Эта штука не такая простая, как все ожидают. Простых вещей больше не осталось: Instagram и Groupon – не самые сложные продукты – уже сделали.

Давайте попробуем взглянуть немного назад, скажем, лет на 35. Это было время появления первых доступных персональных компьютеров. Их уже можно было купить, но в силу странного интерфейса, понятного только очень усидчивым ребятам, пользоваться ими было довольно тяжело. Это была эра software 1.0. Время псевдографики и командной строки, время, когда появление цветного изображения на экране впечатляло больше, чем трюки Копперфильда. По понятным причинам компьютеры, в их тогдашнем виде, не могли стать по-настоящему массовыми. Софт тех времен был скорее научным и “гиковским”, но никак не персональным.

Затем пришла эра графических пользовательских интерфейсов, эра Windows, OS/2 и Mac OS. Компьютеры стали понятнее и люди начали их использовать для своих повседневных задач: создания документов и редактирования изображений. Это время software 2.0. Потом появился интернет, социальные сети и даже облачные вычисления, но софт, в большинстве случаев, остается таким же. Если вы сравните одну из первых версий MS Word и его современную инкарнацию, то обнаружите, что концептуально они практически не отличаются. То есть, возможностей стало больше, но это все еще заменитель карандаша и листа бумаги.
Читать полностью »

Друзья!

11-12 апреля 2013 года проходит одно из самых значимых событий в мире разработки ПО — юбилейная международная конференция Software People. В этом году, конференция проходит в пятый раз, собирая под одной крышей высококлассных специалистов в области разработки ПО.
11 12 апреля. Online трансляция конференции Software People 2013
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js