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