Что бы ни делало структуру вашего приложения наиболее очевидной, это короткий, но в конечном итоге бесполезный ответ. Я не уверен, что есть единственный правильный ответ.
В качестве одной точки данных, вот примерно как я структурировал свое самое сложное приложение:
- Данные (модель) для всего приложения имеют свою группу
- Утилитовые классы / функции получают свою собственную группу (иногда вложенную, когда им требуется несколько собственных классов)
- У меня есть группа
UI
для простых представлений. Эти классы часто также содержат контроллер
- У меня есть куча других групп для серии связанных представлений. Например, моя часть приложения отображает теги, и есть два или три представления, связанные с этим. Я группирую представления, контроллеры и, иногда, данные вместе
Группировка не отражает структуру класса. Мое общее правило заключается в том, что я хочу, чтобы файлы, которые я хочу изменить, одновременно были бы близко друг к другу.