Nomeie colisões entre camadas
-
18-09-2019 - |
Pergunta
Então, estou desenvolvendo um aplicativo de n camadas muito legal (e muito grande).
Basicamente tenho as seguintes montagens:
Domínio
Domínio.Contratos
Serviços
Serviços.Contratos
Apresentação.Admin
Apresentação.Web
Presentation.Core (compartilhado entre Admin e Web)
Posso implementar Presentation.Core.Contracts
Meu principal problema com o qual estou lutando são as colisões de nomes entre as diferentes camadas. Ou seja.
Serviços.Contratos.AccountServicesRequest
Domínio.Contratos.AccountServicesRequest
Tive o mesmo problema com nomes de serviços (neste caso, estou apenas usando classes como serviços em vez de WCF, etc.).Ou seja:
Serviços.Contratos.IAccountService
Domínio.Contratos.IAccountService
Resolvi isso criando todos os "manipuladores de serviço" na camada de domínio IxxxServiceHandler, o que me dá o seguinte:
Serviços.Contratos.IAccountService
Domínio.Contratos.IAccountServiceHandler
No entanto, não consegui resolver esse problema com os objetos que são passados entre as camadas.Isso parece estar espalhado em vários lugares por meio de minhas soluções.Eu só estava curioso para ver se alguém teve os mesmos problemas.Se sim, como você os resolveu?
Solução
Sim, encontrei esse problema, mas sempre o corrigi rapidamente.
Uma boa convenção de nomenclatura de classe pode ajudar.Evite usar o mesmo nome em classes em múltiplas camadas.
Alternativamente, você pode usar aliases de namespace, para que você use, por exemplo:
services::IAccountService
domain::IAccountService
Isso ajuda?