Во-первых, мне жаль говорить, что не существует такого понятия, как "идти по правилам". Все зависит от интерпретации, которая в случае с DDD, к сожалению, имеет очень большие отклонения. Даже Эрик Эванс, кажется, пересмотрел некоторые вещи после выхода книги. Что, в общем-то, нормально, мы все постоянно учимся.
TLDR: Использовать другие "особенности" - хорошо, влиять на другие особенности обратно - не хорошо.
Например, вы используете библиотеку протоколирования. Это использование чего-то, что вы, очевидно, не будете менять (я надеюсь). Использование функции "часы работы" также подходит по той же причине.
Не нормально, когда у вас есть срез "manage_account", иногда люди делают "accounts" (множественное число), или подобное. Это потому, что как только вам, как другому срезу, понадобятся некоторые данные в аккаунте, вы повлияете на аккаунт, чтобы получить эти данные. У вас будет физическая зависимость от "manage_account", но "manage_account" также будет иметь семантическую зависимость от вашего модуля.
Другими словами, если кто-то посмотрит на "manage_account" сам по себе, возникнут вопросы типа: Почему это здесь? Он никогда не используется! Он здесь потому, что кто-то другой использует его. Для чего-то. Или использует?
Это вызывает своего рода круговую зависимость. Что плохо для понимания и поддержки модуля.
Не каждая функция должна быть постоянной. Так что да, "OpeningHours" может быть "функцией". Я бы назвал это скорее "библиотекой", но я не думаю, что категоризация имеет такое большое значение :)
Короче говоря:
Прикрепляю к посту несколько видео по теме: