Por exemplo, uma classe como:
class Dog { } //never mind that there's nothing in it...
e então uma propriedade como:
Dog Dog { get; set; }
Foi-me dito que, se eu não conseguir criar um nome mais imaginativo, devo usar:
Dog DogObject { get; set; }
Alguma idéia de como nomeá-los melhor?
c#
naming
properties
Storm Kiernan
fonte
fonte
Person
classe que contém umaDog
propriedade chamadaDog
Respostas:
Poderia ser uma prática ruim, não fosse o fato de que já é bastante óbvio o que você está falando no seu código, com base no contexto.
Qual é o construtor de tipos? Qual é o objeto? Não está confuso? OK, que tal
Qual é o objeto? Qual é o método estático de fábrica no tipo? Ainda não está confuso? Eu acho que não.
A única vez que vi esse problema em potencial é quando a árvore do namespace se torna bastante elaborada e o compilador não consegue descobrir a ambiguidade. Nesse caso, você acaba com algo como
De qualquer forma, isso só deve acontecer com Propriedades automáticas (e talvez enumerações), pois os nomes de variáveis locais são sempre camelCased, evitando a ambiguidade completamente.
fonte
Dog
tivesse um método de instância chamadoCreate
, mas você estaria mergulhando em algumas práticas terríveis de codificação naquele momento.Não é apenas uma prática razoável, o idioma foi projetado especificamente para permitir isso. Pesquise na especificação do C # por "Color Color" para obter as regras e uma justificativa e consulte
http://blogs.msdn.com/b/ericlippert/archive/2009/07/06/color-color.aspx
para alguns casos interessantes que surgem dessa decisão.
Sob nenhuma circunstância você deve nomear uma propriedade "DogObject" para evitar chamá-la da mesma forma que seu tipo; que contradiz diretamente as diretrizes de design da estrutura.
fonte
Color
), esse uso parece razoável. Eu não gosto muito, no entanto, deIDisposable
tipos ou mutáveis . "Um controleFont
" se refere aos aspectos do estado que são encapsulados pela propriedade ou à instânciaFont
identificada pelo getter da propriedade?É perfeitamente aceitável chamá-lo
Dog
e é isso que a Microsoft recomenda nas diretrizes de nomenclatura do Framework :E aqui está o exemplo que eles usam no guia acima:
fonte