После написания нескольких приложений на python, я обнаружил, что разрываюсь между двумя подходами к организации дерева исходного кода: широким или глубоким.
Для конкретности рассмотрим внутреннее приложение для небольшого консалтингового магазина для управления бизнес-операциями, такими как управление контактами, отслеживание проектов и отчетность, а также управление сотрудниками.Приложение может использовать ключевые объекты, такие как: Компания, Пользователи, Контакты, Клиенты, Проекты, Расписания и т. Д. Не вдаваясь в подробности, можно представить, что эти модели пересекают функции веб-сайта.Это, вероятно, означает, что есть некоторая связь.
В этом примере предпочтительнее организовать в глубоком порядке, например:
models/
people.py
accounting.py
projects.py
foo.py
controllers/
reporting.py
employeeops.py
accounting.py
crm.py
views/
...
или широко, например, с помощью "application ":
people/
models/
views/
controllers/
contact-mgmt/
models/
views/
controllers/
time-tracking/
models/
views/
controllers/
project-reporting/
models/
views/
controllers/
Я знаю, что весь дизайн включает в себя компромиссы, поэтому при ответе вы можете указать свои предпочтения и некоторые аргументы (например, предположения, проблемы модуляции, ограничения инфраструктуры, проблемы масштабируемости, вопросы обслуживания кода,влияние структуры команды разработчиков и т. д.).