Задать вопрос
@SilentGr0ve
Первокурсник

Какие есть источники, помогающие понять бизнес-логику проекта?

Я начал писать свой первый проект, и я хочу разобраться в том, как правильно выстраивать структуру проекта, то есть, как правильно разделять функции по пакетам, чтобы иметь чистый, правильно структурированный код.
Прошу подсказать Вас в этом вопросе. Какие есть источники, где можно про это прочитать.
  • Вопрос задан
  • 927 просмотров
Подписаться 3 Простой 6 комментариев
Помогут разобраться в теме Все курсы
  • Нетология
    Python-разработчик с нуля
    6 месяцев
    Далее
  • Skillfactory
    DevOps-инженер
    6 месяцев
    Далее
  • SF Education
    Бэкенд-разработчик на Python
    3 месяца
    Далее
Решения вопроса 1
VoidVolker
@VoidVolker
Dark side eye. А у нас печеньки! А у вас?
Документация по самому проекту и его архитектуре в частности. Заказчик ставит задачу, на основе этой задачи разрабатывается ТЗ, а на основе ТЗ - частное ТЗ со всеми деталями проекта, в том числе и архитектурой. Вот вам несколько примеров:
Схема алгоритма
CAS, Central Authentication Service
5bd748db6d572869658821.png
Бизнес-логика приложения
20b039b972.png
Схема логики приложения
c0d48719fb.png
Вот ещё один отличный пример: описание структуры JSON - https://www.json.org/json-ru.html
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Zanak
Однозначного рецепта нет.
Самый простой случай: вы строите проект на основе какого - либо фреймворка, и подтягиваете другие возможности, прежде всего БД, может быть, редиску или кролика, в качестве вспомогательных элементов для реализации задач проекта. Здесь все просто - фреймворк определяет размещение, количество и наполнение файлов. Если речь о web фреймворках, и количество страниц заметное, то, не возбраняется разложить ендпойнты по пакетам, согласно их логической близости.
Случай посложнее - монолитный сервис. Здесь в дело вступает декомпозиция по зонам ответственности, авторизация и регистрация, контроль прав, работа с данными проекта, обработка запросов, мониторинг, статистика, логгирование и так далее. Здесь, я, обычно, разделяю код по пакетам, чтобы не смешивать задачи, и сохранять его "обозримость".
Если, например, вы рассматриваете микросервисный проект, где подбираете инфраструктуру, и с помощью отдельных процессов выстраиваете взаимодействие между элементами, то, каждый микросервис, по сути, является отдельным приложением, которое может разделять, а может и нет, кодовую базу предметной области с другими.
Коллеги вспомнили о структурных паттернах, но, позволю себе обратить внимание на то, что данные шаблоны не регламентируют разделение кода по файлам. В них речь идет исключительно о способах решать конкретные проблемы.
Если смотреть на вопрос со стороны ТЗ, то, я стараюсь выделять минимальные смысловые части, и реализовывать их, как сочту правильным/удобным. Например, написано: работа пользователя с данными возможна только после авторизации, новые пользователи обязаны пройти процедуру регистрации. Из этого вытекает такая последовательность реализации: создаем миграцию для создания таблицы пользователей, создаем процедуру регистрации, создаем процедуру проверки данных авторизации, организуем хранение информации об авторизованных пользователях "кто онлайн". Миграции, как правило, хранятся пофайлово, манипуляция с учетками, может, относится к работе с объектом "пользователь", контроль прав может лежать в отдельном пакете, и подключаться по необходимости.

На мой взгляд, получается, как-то так.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы