Как избежать столкновения пространства имен и имени класса в «вертикально разделенных» сборках? - PullRequest
5 голосов
/ 03 июля 2010

Под «вертикально разделенным» я имею в виду наличие пространств имен, названных в честь модулей, а не «слоев»

Итак,

  • MyApp.Core
  • MyApp.Accounting
  • MyApp.OrderManagement
  • MyApp.HR

вместо

  • MyApp.UI
  • MyApp.Business
  • MyApp.Data

Единственная проблема, с которой я сталкиваюсь, заключается в том, что иногда эти сборки могут иметь часть пространства имен, совпадающую с именем типа.

Допустим, я создал модуль, связанный с учетной записью, и назвал его MyApp.Account.dll с базовым пространством имен MyApp.Account. Неизбежно, мне нужно создать класс с именем Account. Затем я должен использовать пространство имен или ввести псевдонимы.

Кроме того, чтобы быть очень креативным с именами, кто-нибудь еще испытывал разрезание сборок таким образом и имел дело с проблемами столкновения имен?

1 Ответ

9 голосов
/ 03 июля 2010

В прошлом я имел дело с этим двумя способами:

1) Плюрализировать пространства имен или делать их герундами, где это необходимо (добавляя суффикс -ing). Например, MyApp.Orders может безопасно содержать класс Order. (Точно так же придерживайтесь «MyApp.Accounting», а не «MyApp.Account»).

2) Добавив Domain к пространству имен (немного неудовлетворительно, но эффективно).

...