У меня есть многоуровневое приложение с пространствами имен:
App.Core
- службы логики бизнес-уровняApp.Data
- классы хранения уровня доступа к данным и объекты доступа к даннымApp.Web
- уровень пользовательского интерфейсаУ меня также есть бизнес-объекты/DTO. Они находятся в пространстве имен App.Objects
, но мне не нравится это соглашение об именах. Зачем? Поскольку это пространство имен также будет содержать суффиксы поднесущих объектов, таких как App.Objects.KeywordObjects
. Эти подпространства не могут быть без суффикса Objects, потому что некоторые из них также будут содержать классы с тем же именем (App.Objects.KeywordObjects
будет содержать классы Keyword
и Keywords
).
Я думал изменить App.Objects
на что-то другое. Поэтому у меня нет дублирующего слова "Объекты". Но я не могу найти ничего полезного. И я не хочу использовать аббревиатуры типа DTO или BO.
Как вы обычно называете свои пространства имен и что вы предлагаете мне использовать в этом случае.
Глубина пространства имен должна соотноситься с частотой использования. Почему бы не поместить их в App
? Если ваше приложение вращается вокруг бизнес-объектов, имеет смысл держать их в корне или рядом с ним.
Для практического сравнения для многих бизнес-приложений бизнес-объекты аналогичны хранению общих типов в системе. Они всепроникающие.
Я поклонник руководящих принципов в "Руководстве по разработке рамок" Брэда Абрамса и Аль, который даст вам:
YourCompany.BusinessArea
для ваших бизнес-объектов и YourCompany.BusinessArea.Web
для вашего веб-уровня. Я, похоже, помню, что также было указано, что объект не должен полагаться на вложенное пространство имен (но вы можете положиться на родительское пространство имен)
Вот несколько советов:
App.Contracts
App.Entities
Давать вещи доброе имя трудно. Лучшее, что я могу предложить, это найти что-то, что работает для вас, и приложить все усилия, чтобы быть последовательным по стилю и тону. Это легче сказать, чем сделать.
"Когда я использую слово, - сказал Шалтай-Болтай довольно презрительным тоном, - это означает, что я хочу, чтобы это означало - ни больше, ни меньше". - Льюис Кароль
Я бы сделал следующее изменение
App.Core => App.Services
App.Objects => App.Core
или
App.Objects => App.Model
Я обычно использую общие аббревиатуры свободно (поэтому я не против использовать App.BO
, лично), но если у вас всегда есть суффикс Objects
в подзоне, я думаю, что App.Business
читается красиво, например App.Business.KeywordObjects
с что "бизнес-фраза. (Если у вас не всегда есть суффикс Objects
для пространств имен, то это предложение не будет работать так же, как это было бы странно).
App.Business?