Рубрика «архитектура»

Ускользает понимание своего или чужого кода?

Не можете вникнуть в алгоритм?

Проводите кучу время в отладке, но найти место неверной инициализации не получается, а хочется получать удовольствие от кодирования?

Вспомните о приведенных ниже правилах и примените их!

В статье не рассматриваются базовые правила именования переменных и функций, синтаксические отступы и масштабная тема рефакторинга. Рассматриваются 5 простых правил по упрощению кода и снижению нагрузки на мозг в процессе разработки.

Рассмотрим процесс восприятия данных, чтобы соотнести описанные правила с процессом восприятия и определить критерии простого кода.

Упрощенный процесс восприятия состоит из следующих этапов:

  1. Поступающая через рецепторы данные соотносятся с предыдущим опытом.
  2. Если соотнесения нет – это шум. Шум быстро забывается. Если есть с чем соотнести, происходит опознавание фактов.
  3. Если факт важен — запоминаем, либо обобщаем, либо действуем, например говорим или набираем код.
  4. Для сокращения объема запоминаемой и анализируемой информации используется обобщение.
  5. После обобщения, информация вновь соотносится и анализируется (этап 1).

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

Архитектурные решения для мобильной игры. Часть 2: Command и их очереди - 1

В первой части статьи мы рассмотрели как должна быть устроена модель, чтобы пользоваться ей было легко, а отлаживать её и прикручивать к ней интерфейсы просто. В этой части мы рассмотрим отдачу команд на изменения в модели, во всей её красоте и разнообразии. Как и раньше, приоритетом для нас будет удобство отладки, минимизация телодвижений, которые нужно сделать программисту, чтобы создать новую фичу, а также читабильность кода для человека.

Архитектурные решения для мобильной игры. Часть 1: Model
Внимание, в первой части статьи мной был допущен ляп в форматировании, из-за которого в некоторых браузерах пол статьи не показывалось. Если вы читали предыдущую статью, и вам показалось, что она как-то странно обрывалась — сходите по ссылке и дочитайте вторую половину.
Читать полностью »

Эпиграф:
— Как я тебе оценю, если неизвестно что делать?
— Ну там будут экранчики и кнопочки.
— Дима, ты сейчас всю мою жизнь описал в трёх словах!
(с) Реальный диалог на митинге в игровой компании

Архитектурные решения для мобильной игры. Часть 1: Model - 1

Набор потребностей и отвечающих им решений, о которых я поговорю в этой статье, сформировался у меня в ходе участия примерно в десятке крупных проектов сначала на Flash, а позже на Unity. Самый крупный из проектов имел больше 200000 DAU и дополнил мою копилку новыми оригинальными вызовами. С другой стороны, подтвердилась уместность и нужность предыдущих находок.

В нашей суровой реальности каждый, кто хоть раз архитектурил крупный проект хотя бы в своих мыслях, имеет свои представления о том, как надо делать, и часто готов отстаивать свои идеи до последней капли крови. У окружающих это вызывает улыбку, а менеджмент часто смотрит на всё на это как на огромный чёрный ящик, который никому углом не упёрся. Но что если я скажу вам, что правильные решения помогут сократить создание нового функционала в 2-3 раза, поиск ошибок в старом в 5-10 раз, и позволят делать многие новые и важные вещи, которые раньше были вообще недоступны? Достаточно лишь впустить архитектуру в сердце своё!
Читать полностью »

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

Большинство разработчиков любят заниматься архитектурой, продумывать как система или её часть будет устроена с чистого листа. Если тот, кто продумал архитектуру системы, и будет её реализовывать, никаких проблем с мотивацией нет: программист получит удовлетворение от воплощения в жизнь задуманных им идей. Но если архитектуру продумал один, а реализацией будет заниматься другой, то у последнего может возникнуть естественное возмущение: все продумали за меня, а мне только делать по написанному?

Как поделить архитектуру и реализацию и не поругаться - 1

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

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

Как правило статьи, рассказывающие о проектировании типами, содержат примеры на функциональных языках — Haskell, F# и других. Может показаться, что эта концепция неприменима к объектно-ориентированным языкам, но это не так.

В этой статье я переведу примеры из статьи Скотта Власчина Проектирование типами: Как сделать некорректные состояния невыразимыми на идеоматичесий C#. Также я постараюсь показать, что этот подход применим не только в качестве эксперимента, но и в рабочем коде.

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

SDK тебе, SDK мне, SDK всем! Как делать SDK и зачем это нужно - 1

Всем привет!

Наша компания делает сервис для хранения и обработки данных с промышленных устройств (насосы, буры и прочая промышленная техника). Мы храним данные наших клиентов и предоставляем функционал для их анализа: построение отчетов, графиков и еще много чего.

И в ходе работы мы заметили, что интеграция каждого нового клиента сильно затягивается, а количество различных ошибок постоянно возрастает. Тогда стало понятно, что пора с этим разобраться. Как показал анализ ситуации, IT отдел каждого нашего клиента разрабатывал свое решение для локального сбора данных с устройств и отправки к нам в сервис. Все усложняет то, что с учетом специфики отрасли, не всегда есть доступ к интернету и необходимо хранить данные локально и отправлять при первой возможности. И таких нюансов достаточно большое количество, что и приводит к росту количества ошибок.

И тогда мы поняли, что лучшим решением в данной ситуации будет разработать SDK и предоставлять его клиенту. Сразу же начал искать лучшие практики и рассуждения на тему разработки SDK и сильно удивился — в рунете об этом практически ничего нет, а в басурманских интернетах очень мало информации и она разрознена. Ну что ж, задача понятна, обдумана и реализована.

Но именно отсутствие информации на данную тему породило желание рассказать сообществу о размышлениях, принятых решениях и выводах на тему разработки SDK. В статье рассматривается решение для .NET, но речь идет о концепции, так что будет интересно многим. Подробности под катом!

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

Интеграция приложений — одна из самых значительных статей расходов на ИТ для многих компаний. Кто-то внедряет ESB — централизованный обмен данными между различными информационными системами происходит через интеграционную шину. Другие выбирают распределённую (Distributed) архитектуру, где обмен данными происходит посредством использования системами ресурсов друг друга.

В своей работе «Промсвязьбанк» уделяет внимание обоим подходам к распределительным системам, а 29 ноября, корпоративный архитектор ПСБ Александр Трехлебов (holonavt) и руководитель центра инноваций и перспективных технологий банка Андрей Трушкин вынесут преимущества и недостатки этих двух типов архитектур на суд профессиональной общественности в новом формате митап-баттла ESB vs Distributed.

Кто победит в дебатах mesh-сети против ESB - 1
Читать полностью »

Привет!

Мы приступаем к переводу книги Криса Ричардсона "Microservices Patterns. With examples in Java". До премьеры на русском языке еще с полгода, но мы хотели бы предложить вам своеобразный трейлер — немного сокращенный обзор этой книги от Бена Нейдела (Ben Nadel), прочитавшего MEAP-версию. В обзоре активно цитируется текст Kindle-версии Ричардсона.

Микросервисы. Паттерны разработки и рефакторинга с примерами на языке Java - 1

Добро пожаловать под кат!
Читать полностью »

Раньше для вызова такси приходилось звонить на разные номера диспетчерских служб и ждать подачу машины полчаса или даже больше. Теперь сервисы такси хорошо автоматизированы, а среднее время подачи автомобиля Яндекс.Такси в Москве около 3-4 минут. Но стоит пойти дождю или закончиться массовому мероприятию, и мы вновь можем столкнуться с дефицитом свободных машин.

Меня зовут Скогорев Антон, я руковожу группой разработки эффективности платформы в Яндекс.Такси. Сегодня я расскажу читателям Хабра, как мы научились прогнозировать высокий спрос и дополнительно привлекать водителей, чтобы пользователи могли найти свободную машину в любое время. Вы узнаете, как формируется коэффициент, влияющий на стоимость заказа. Там всё далеко не так просто, как может показаться на первый взгляд.

Динамическое ценообразование, или Как Яндекс.Такси прогнозирует высокий спрос - 1
Читать полностью »

Еще одна расшифровка доклада с Pixonic DevGAMM Talks. Антон Косякин — Technical Product Manager и работает над ALICE Platform (такая Jira для отелей). Он рассказывал, как они интегрировали воедино существующие в проекте инструменты для тестирования, зачем нужны нагрузочные тесты, какие инструменты предлагает комьюнити и как запустить эти инструменты в облаке. Ниже — выступление и текст доклада.

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