ODMA

Организация кода

← К концепции

Локальность следует за ownership

Реализация возможности и её тесты находятся у владельца. Не выносим функцию только потому, что технически можно создать ещё один файл. Повторное использование не оправдывает автоматический перенос поведения в utils.

Vue-компонент стоит разделить, если он превышает примерно 300 строк, объединяет независимые обязанности или содержит поведение с естественным доменным владельцем. Доменная логика переходит в этот домен, а не в безымянный общий composable.

domains/business/catalog/
  models.ts
  api/
  ui/
  tests/

Это пример выражения ответственности, а не обязательный шаблон папок. На backend модели, сериализаторы, views, admin и CMS-плагины могут находиться в одном домене. При рефакторинге сохраняем явные Django app labels, идентичность данных и публичные экспорты.