После записи некоторым Python appengine приложения я нахожу меня порванным между двумя подходами к организации моего дерева исходного кода: широкий или глубокий.
Для конкретности рассмотрите внутреннее заявление для небольшого консультационного магазина для управления бизнес-операциями как управление контактами, отслеживание проекта и создание отчетов и управление сотрудника. Приложение могло бы использовать ключевые объекты как: Компания, Пользователи, Контакты, Клиенты, Проекты, Расписания, и т.д. Без того, чтобы сообщать подробности можно предположить, что эти модели являются сквозными через функции веб-сайта. Это вероятное средство там является некоторой связью.
В этом примере, это предпочтительный для организации глубоким способом, например:
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/
Я знаю, что весь дизайн включает компромиссы, поэтому когда ответ может Вы указывать на свое предпочтение и некоторое обоснование (например, предположения, модуляция проблем, пределов платформы, проблем масштабируемости, кодировать соображения обслуживания, влияние структуры группы разработчиков, и т.д.).