Acabei de encontrar um "problema interessante", sobre o qual gostaria de sua opinião:
Estou desenvolvendo um sistema e, por muitas razões (significando: abstração, independência tecnológica etc.), criamos nossos próprios tipos para a troca de informações.
Por exemplo: se existe um método chamado SendEmail e é invocado pela lógica de negócios, ele possui um parâmetro do tipo OurCompany.EMailMessage, que é um objeto totalmente independente da tecnologia e contém apenas "dados relevantes para os negócios" (por exemplo, nenhuma informação sobre a codificação principal).
Dentro da função SendEmail, obtemos essas informações do nosso objeto EMailMEssage e criamos um objeto MailMessage (este é específico da tecnologia) para que possa ser enviado pela rede.
Como você já pode perceber, nossa classe tem um nome muito semelhante à classe de idioma "nativo". O problema é: isso é exatamente o que são, mensagens de email, por isso é difícil encontrar outro nome significativo para eles.
Você tem esse problema com frequência? Como você administra isso?
Edit: @mgkrebbs acabou de comentar sobre o uso de nomes totalmente qualificados. Esta é a nossa abordagem atual, mas um pouco detalhada demais, IMHO. Eu gostaria de algo mais limpo, se possível.