Вступление Спикер представляется как Саша и рассказывает о своем техническом блоге и плане на ближайшие 1-2 часа, который включает обсуждение чистой архитектуры и того, как ее можно применить к интерфейсной разработке.
Чистая архитектура Саша объясняет, что чистая архитектура - это способ разделения обязанностей и функциональности на уровни, в центре которых находится уровень домена, а вокруг него - уровень приложений. Они также обсуждают важность расширения систем с учетом меняющихся требований и использования typescript для описания сущностей.
Слои и зависимости Саша рассказывает о различных уровнях чистой архитектуры, включая уровень представления, уровень домена и уровень инфраструктуры. Они также обсуждают использование адаптеров для обеспечения совместимости несовместимых внешних служб с интерфейсом приложения и преимущества разделения задач для упрощения тестирования и обновления.
Архитектура как инструмент Архитектура - это, прежде всего, инструмент для проектирования и реализации программных проектов, и у нее есть свои затраты, включая время и ресурсы. Важно упростить архитектуру и обеспечить, чтобы она была проста в использовании разработчиками.
Каноническая реализация Каноническая реализация не всегда удобна, и может потребоваться компромисс во время проектирования и внедрения, чтобы оставаться в рамках бюджетных и временных ограничений. Однако важно следовать лучшим практикам и убедиться, что код прост и удобен в обслуживании.
Разделение задач Разделение задач имеет решающее значение при разработке программного обеспечения, и оно включает в себя разделение приложения на различные уровни, такие как домен, сервис и презентация. Также важно определить домен и убедиться, что код прост в понимании и обслуживании.
Список ингредиентов В тексте описывается использование определенного типа кода для написания названий ингредиентов и важность добавления товара в корзину с указанием его местоположения по GPS.
Дополнительные ингредиенты и начинки В главе обсуждается использование начинок и необходимость добавления статуса заказа пользователя, а также создание отдельного домена для преобразования данных.
Расчет общей цены В этой главе объясняется необходимость расчета общей цены продуктов и использования функции для этого, а также потенциальные опасности прямого доступа к другим компонентам.
Разделение задач Проект требует хорошей модульности и разделения задач. Этого можно достичь с помощью дополнительных адаптеров компонентов, но в большинстве случаев это не является большой проблемой в контентном приложении.
Дизайн API Функции API должны быть спроектированы таким образом, чтобы разработчику было удобно получать и возвращать данные в нужном ему формате. Аннотации могут использоваться для описания общих типов, относящихся к предметной области системы.
Взаимодействие с внешними службами При взаимодействии с внешними сервисами важно учитывать технические аспекты того, как пользователь взаимодействует с программой. Основная логика сайта должна поддерживаться в чистоте, а обработка данных должна осуществляться с помощью чистых функций. Внешние службы должны быть разработаны в соответствии с потребностями приложения, и они должны быть адаптированы к интерфейсам приложения.
Разработка интерфейса и платежной системы Команда начинает с разработки интерфейса и платежной системы для внешнего сервиса, разделяя его на уровни и порты. Сначала они планируют внедрить платежную систему и использовать клиентский интерфейс. Они также решают абстрагировать службу для обработки ошибок отдельно.
Обновление уведомлений и пользовательских заказов Команда обсуждает, как обрабатывать уведомления об обновлении и пользовательские заказы, решив создать отдельный модуль для каждой задачи. Они также планируют использовать отдельное хранилище для новых заказов и увеличить историю заказов. Они пишут код для создания нового заказа и пытаются оплатить его с обработкой ошибок и уведомлением пользователя.
Интеграция адаптеров и сервисов Команда обсуждает интеграцию адаптеров и служб, создание адаптеров для обработки различных типов данных и использование перехватчиков и модификаторов для автоматизации процесса. Они также обсуждают использование файлов cookie и реестра сервисов для обработки обмена данными между сервисами. Они планируют использовать пользовательский интерфейс и контейнерное приложение, чтобы связать все воедино.
Архитектура и зависимости В статье обсуждается важность категоризации обязанностей и использования адаптеров для обеспечения надлежащей реализации зависимостей. Он также предлагает использовать хаки и нарушать соглашения, чтобы избежать универсальных решений.
Разделение задач В статье подчеркивается необходимость отделения бизнес-логики от инфраструктуры и организации кода по уровням. Он также предлагает использовать чистые функции и тестирование для обеспечения корректности кода.
Компонентизация и развертывание В статье обсуждаются преимущества компонентизации и развертывания отдельных компонентов. Он также предлагает использовать порты и адаптеры для взаимодействия с внешними службами и разделять проблемы по разным папкам.
Упрощающий дизайн стен Спроектировать стену высотного здания можно более простым способом, чем считалось ранее, и автор рекомендует использовать чистый архитектурный подход. Автор также предлагает использовать пост, в котором объясняется, как использовать подход с чистой архитектурой.
Трехуровневая архитектура Автор рекомендует использовать подход к трехуровневой архитектуре, который позволяет разделить код на независимые уровни, модули и сервисы. Автор также предлагает использовать TypeScript и интерфейсы, чтобы сделать архитектуру более удобной.
Работа со сложностью сущностей В более крупных проектах с тысячами объектов может быть трудно провести различие между похожими объектами. Автор предлагает принять политическое решение об объединении подобных образований или об их разделении. Автор также рекомендует документировать бизнес-логику и при необходимости использовать мультипроектный подход.
Кластеризация в предметно-ориентированных областях В тексте обсуждается создание кластеров в предметно-ориентированных областях, что включает в себя идентификацию и разделение кластеров на основе их характеристик и сценариев. Цель состоит в том, чтобы создать функциональное ядро для домена и определить небольшие элементы, которые преобразуют данные.
Идентификация и разделение доменов Чтобы начать процесс кластеризации, важно идентифицировать и разделить домены. Это включает в себя поиск ядра домена и создание модуля для него. В тексте предлагается начать с интуитивно понятных контуров, а затем уточнить область по мере необходимости.
Работа с грязными проектами и вариациями При работе с грязными проектами важно попытаться спасти то, что можно спасти, и создавать небольшие приложения или интерфейсы. В тексте также обсуждаются проблемы, связанные с различиями в типах продуктов и параметрах, которые могут потребовать создания отдельных объектов или добавления дополнительных параметров к существующим объектам.