Вариант решения задания - проектирование предметной области
Итак, надеюсь у вас получилось выполнить упражение по проектированию предметной области.
Ниже, возможный вариант решения этой задачи. Я просто дополнил список сущностей, добавив те, которые обнаружил в процессе: позиции меню, категории, опции блюд, корзину. Затем я указал основные атрибуты и операции для каждой сущности.
Результат вы сможете найти по ссылке
Ниже вы можете увидеть диаграмму классов. Я создал её очень просто: скопировал весь список сущностей, передал его ChatGPT и попросил сгенерировать диаграмму-классов в синтаксисе Mermaid. После этого я вставил результат в Mermaid.live — и получил визуальную схему. Такие диаграммы полезны при написании дизайн-документов или когда нужно объяснить устройство какой-то фичи и показать все сущности, вовлечённые в процесс. Позже в модуле мы ещё поговорим о диаграммах и документации.

Хотелось бы отметить пару интересных моментов.
Первый — это выбор типов данных. Когда у вас недостаточно опыта в выполнении подобных задач может быть трудно определиться с форматом и типом данных для тех или иных сущностей. Иногда приходится просто делать предположения, выбирая лучшее, но при этом нужно быть готовым изменить свое решение в будущем если понадобиться. Например, для времени доставки я выбрал кортеж из двух чисел. Возможно, в итоге тип будет другим, но это хотя бы точка для обсуждения с командой: как мы хотим работать с этим атрибутом на UI-слое, как он будет выглядеть в данных, как его парсить и преобразовывать.
Второй момент связан с именованием сущностей. В процессе я обнаружил, что у меня есть два разных типа категорий:
— категория ресторана (итальянский, японский, мексиканский),
— категория меню (завтрак, десерты, бургеры).
Сначала я назвал категорию ресторана просто Category, потому что других категорий ещё не было. Но когда появилась вторая категория, пришлось переименовать первую, чтобы быть конкретнее. Это важно: если в будущем в коде мы увидим что-то вроде Category, будет неясно, о какой категории речь — ведь обе связаны с рестораном, просто по-разному.
Это отличный пример того, почему лучше продумать названия на раннем этапе. Сейчас изменить имя сущности — пару секунд. Если бы приложение уже было реализовано, переименование затронуло бы десятки файлов, функций, типов — и заняло гораздо больше времени.
Это платный урок
Купите полный доступ к курсу чтобы просматривать данный контент
Основы архитектуры фронтенда
Изучите основы проектирования современных, высоконагруженных фронтенд-приложений.
Безопасные платежи обрабатываются сервисом Юкасса
Комментарии
Войдите, чтобы оставить комментарий