2010-07-02 11 views
5

Przez "Pionowo podzielona", to znaczy posiadające nazw nazwanych po modułów zamiast "warstwach"Jak uniknąć kolizji przestrzeni nazw i nazw klas w zespołach "partycjonowanych pionowo"?

Więc

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

zamiast,

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

Jedynym problemem używam na to, że czasami te zespoły mogą mieć część przestrzeni nazw, która jest taka sama jak Wpisz imię.

Załóżmy, że tworzę moduł związany z kontem i nazwałem go MyApp.Account.dll z podstawową przestrzenią nazw będącą MyApp.Account. Nieuchronnie muszę utworzyć klasę o nazwie Konto. Następnie muszę użyć przestrzeni nazw lub wpisać aliasy.

Czy ktoś inny nie jest tak twórczy, jak w przypadku nazw, czy też nie ma problemów z kolizją nazw?

+0

Czy mogę zapytać, co jest potrzebne, aby stworzyć taką przestrzeń nazw? Dlaczego nie MyApp.Business.Account? – ram

+0

Czy mówisz, że przestrzeń nazw byłaby MyApp.Business, która zawierałaby Konto typu? Jeśli tak, jest to jeden ze sposobów radzenia sobie z tym - w rzeczywistości myślę o zachowaniu nazw złożeń jako MyApp.Accounting, a następnie o przestrzeni nazw jako MyApp.DomainObjects, w ramach której zostanie utworzony typ konta. –

+0

Powodem, dla którego tworzę te pionowe plasterki, jest to, że każdy "moduł" może być rozwijany i utrzymywany osobno. Zamiast wszystkich funkcji w jednym zestawie w sekcji "Biznes", będziesz mieć wiele złożeń zawierających wszystkie "warstwy" wymagane do obsługi pojedynczej funkcji. –

Odpowiedz

9

W przeszłości, mam do czynienia z tym na dwa sposoby:

1) liczby mnogiej przestrzeni nazw lub czyniąc je gerunds gdzie stosowne (dodanie przyrostka -ing). Na przykład MyApp.Orders może bezpiecznie zawierać klasę Order. (Podobnie, trzymaj się "MyApp.Accounting" zamiast "MyApp.Account").

2) Przez dodanie Domain do przestrzeni nazw (nieco niezadowalające, ale skuteczne).

Powiązane problemy