Как правильно сделать декомпозицию приложений Django?

Как правильно сделать декомпозицию проекта Django на приложения? Из project in apps?
Понимаю, что приложения можно закодить отдельно и потом вставлять в любой другой проект, где это нужно. Но не понимаю с какой логикой делят большой проект на приложения.

Чем больше приложений в проекте, тем лучше?
  • Вопрос задан
  • 1112 просмотров
Решения вопроса 2
un1t
@un1t
Запустить приложение отдельно это отдельная тема, она требует большего уровня абстракции и универсальности, со всеми плюсами и минусами. Обычно приложения в проекте долнольно тесно связаны и выделить их отдельно не представляется возможным, по крайней мере без напильника, да и смысла нет. Количество приложений в проекте зависит от размера проекта и степени связанности логики. Ну логика выделения простая, хотя формализовать ее сложно. Если в приложении становиться очень много моделей и вьюх, то есть смысл подумать о выделении части в отдельные приложения. Или если приложения сразу видно, что совсем про разное, то можно сразу выделять.
Ответ написан
Вроде простой вопрос, на который тем не менее, крайне сложно дать вразумительный ответ.
Чем больше приложений в проекте, тем лучше?

нет, точно также не является лучшей практикой пихать всё в одно приложение.

Разделение на модули делается для одной простой вещи - борьба со сложностью.
Разрабатывать и поддерживать гораздо проще несколько модулей, каждый со своим функционалом и спецификой, чем один божественный апликйешен.
Самое очевидно разбиение, эт вынесение специфического функционала, напрямую не влияющего на функционирование "ядра", допустим отчёты(если вы не саму систему отчётов пишете), они находятся в отдельном апликешене, я в принципе вообще могу их отключить, и при этом основная функциональность никак не будет затронута.
Затем идёт явное логическое разделение, специфический функционал/задачи, допустим работа с адресным справочником, его периодическая синхронизация и прочее, все специфические задачи работы с ним находятся в отдельным модуле, и как они реализованы не касается остальной системы, при этом сам адресный справочник уже активно используется в остальной системе.
И самый не очевидный этап, это когда один из апликешенов становится слишком сложным, тут можно воспользоваться, как разнесением функционала по отдельным файлам внутри самого апликешена, так и попытаться разнести его по отдельным апликешенам — собственно хорошо спроектированная система где это не придётся делать.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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