Font size
Worksheets1 глава "Паттерны разработки на Python"
Total questions: 24
Worksheet time: 17mins
Основные методологии применяемые для управления сложностью согласно книге "Паттерны разработки на Python"
Test-Driven Development (TDD)
Domain-Driven Design (DDD)
Событийно-управляемые службы
Что такое предметная область (Domain)?
База данных приложения, где хранятся все таблицы и SQL запросы
Набор HTTP-endpoints API сервиса
Своеобразный способ выразить решаемую задачу
Любые Python-библиотеки, которые вы используете в проекте
Для интернет-магазина предметная область это -
Заказ
Товар
Корзина
Мобильное приложение
Модель предметной области (Domain Model),
согласно первой главе "Паттерны разработки на Python", это ?
Ядро приложения, где живут бизнес-правила
Шаблон проектирования, который используется для оптимизации работы с БД и улучшения производительности приложения
Абстракция бизнес-логики и правил, воплощенная в коде без привязки к техническим деталям реализации
Набор алгоритмов машинного обучения, предназначенный для решения поставленной задачи
Как должно быть согласно 1 главе "Моделирование предметной области"?
Чем характеризуется "Объект-значение"?
Нет идентификатора
Неизменяемый, после создания атрибуты не меняются
Должен наследоваться от dataclass или pydantic.BaseModel для удобства
Сравнение по значению работает даже если это разные объекты в памяти
Выберите пример корректного паттерна "Объект-значение"
Определите ВСЕ ошибки, которые сделаны в текущем паттерне "Объект-значение"
Наличие id
Изменяемость
Сравнение по id
Зависимость от dataclass
Сущность (Entity) - это объект предметной области, который?
имеет уникальный идентификатор
не может изменять свое состояние
сравнивается по идентификатору
поведение сущности управляет её состоянием
Найдите пример корректной сущности
На удачу
13
6
8
7
Определите ошибки в данной сущности User
Жёсткая зависимость от БД
Метод изменяет состояние и возвращает данные
Нет уникального id
Сравнение по атрибутам, а не по id
Определите какие ошибки сделаны в сущности Product
Ошибок нет
Нет уникального ID
Прямая зависимость от внешней библиотеки
Сравнение по имени
Что будет являться предметной областью для Банка?
Клиент
Postgres
Перевод
Счет
Docker
О чем говорит DDD (Domain Driven Design)?
Если вы правильно поняли предметную область и выразили в коде, ваше ПО станет полезным инструментом, который решает реальные бизнес-проблемы и открывает новые возможности
Если ваше ПО технически рабочее, оно автоматически приносит пользу бизнесу, даже если модель предметной области неверна или упрощена
Если ваше ПО компилируется, выполняет базовые функции и не падает, этого достаточно для бизнеса
Найдите ВСЕ ошибки для сущности BankAccount
Сравнение не по id
Зависимость от инфраструктуры
Идентичность не по id
Ошибок нет
Чем характеризуются операции службы ?
Не принадлежат ни одной сущности
Не принадлежат ни одному объекту-значению
Координируют работу нескольких объектов
Не имеют состояния
Определите что НЕ является корректной операцией службы
Магические методы в контексте DDD и моделирования предметной области позволяют ?
Использовать операторы +, -, ==
Интегрировать модели со стандартными функциями Python (len(), iter())
Смешивать логику
Сделать код читаемым
Есть ли магический метод в классе Address?
init
str
repr
нет
Найдите магические методы в классе BankAccount
eq
deposit
withdraw
str
len
Почему это исключение является доменным?
Исключение содержит доменные данные
Наследуется от базового класса Exception
Так как вызывается внутри withdraw, который относится к банковской сфере
Сообщение на языке бизнеса
Является ли это исключение доменным?
да
нет
возможно
не знаю
Почему данное исключение не является доменным?
Не относится к бизнес-правилам
Использует технические термины
Не связано с сущностями или бизнес-процессами
Не понятно бизнес-пользователю
