Краткий ответ: поместите папку «models» рядом с папкой «store», а не внутри.
Длинный ответ:
Обычно существует две стратегии организации файлов:
- Группировка по утилитам (например, модели, услуги, компоненты и т. Д. c.)
- Группировка по категориям доменов (например, пользователи, продукты, заказы и т. Д. c.)
Что бы вы ни выбрали, есть компромисс.
Первая стратегия наиболее распространена. Он не позволяет вашему проекту получить много папок в папке root, а также позволяет легко решить, куда помещать новые файлы. Недостаток заключается в том, что тесно связанные файлы оказываются далеко друг от друга, и по мере роста вашей кодовой базы вы будете тратить время на поиск файлов, которые зависят друг от друга.
Второй момент прекрасно связывает связанные файлы. Представьте, например, папку с названием «Домашние животные», которая содержит модель питомца, компонент питомца, службу питомца и модульный тест для этой службы. Это делает навигацию по Pet logi c намного проще. Тем не менее, каталоги следуют древовидной структуре, в то время как модель предметной области больше похожа на график, и это может вызвать трудности для правильной организации ваших файлов.
Я считаю, что люди чаще всего организуют код сначала по утилитам, а затем по категориям доменов. , но я не уверен, что назову это лучшей практикой. И наоборот, у меня тоже получалось неплохо.
Если вы организуете утилиты, вам следует избегать их вложения, потому что почти никогда не бывает, чтобы одна утилита принадлежала другому. Конечно, модели не принадлежат одному магазину. Компонент, который зависит от модели, так же тесно связан с этой моделью, как и магазин. Поэтому размещение папки «models» рядом с папкой «store» имеет больше смысла.