Это скорее вопрос, основанный на мнении, но я хотел бы дать вам пару предложений.
Прежде всего, naming .
Префикс I
включенИнтерфейсы - это «древняя» техника IBM для их распознавания.Пожалуйста, не делайте этого, это избыточно, это не имеет смысла в новой среде.Что такое I-MessageRepository
?!
Вы найдете этот тип именования в основном для Eclipse RCP
проектов или любого продукта IBM.
Тогда имя реализации.Не используйте суффикс Impl
, он ничего не говорит человеку, который читает или редактирует ваш код.
Дайте ему имя, в котором будет указано его назначение или область действия домена.
ActiveMQMessageRepository
FileMessageRepository
TcpMessageRepository
Во-вторых, Repositories
.
Хранилища должны управлять одним типом объектов, но не более одного.Используйте Services
, чтобы координировать несколько Repositories
.Это упростит отладку для всех и отсоединит много кода.
В-третьих, packages
.
Старайтесь всегда иметь плоскую структуру пакета.Плоская структура проще в обслуживании, на нее легче смотреть, легче для понимания.Не создавайте десятки подпакетов, таких как
- messages
- services
MessageService
- implementations
...
- repositories
MessageRepository
- abstract
AbstractMessageRepository
- implementations
TextMessageRepository
- exceptions
- runtime
- checked
UnsupportedMessageException
Ужасно и бесполезно.И вы не можете использовать видимость пакета .
Так что держите messages
и groups
на отдельных пакетах и присваивайте им свои Repository
.
Предоставлять интерфейсы из пакетов, а не конкретные реализации. (когда это возможно)