Qual é a abordagem recomendada para nomear classes base? É prefixar o nome do tipo com " Base " ou " Abstrato " ou apenas sufixá-lo com "Base"?
Considere o seguinte:
tipo: ViewModel
por exemplo , MainViewModel , ReportViewModel
classe base: BaseViewModel
ou ViewModelBase
ouAbstractViewModel
Considere também:
tipo: Product
por exemplo , VirtualProduct , ExpiringProduct
classe base: BaseProduct
ou ProductBase
ouAbstractProduct
Qual você acha que é mais padrão?
class Entity : EntityBase
{
}
ou
class Entity : BaseEntity
{
}
c#
naming-conventions
base-class
Soni Ali
fonte
fonte
Respostas:
Há exemplos na quadro com o sufixo Base, por exemplo
System.Configuration.Provider.ProviderBase
,System.Web.SessionState.SessionStateStoreProviderBase
.Mas de forma alguma todas as classes básicas abstratas no Framework seguem essa convenção (por exemplo
System.Data.Common.DbParameter
,System.Data.Common.DbCommand
).Pessoalmente, eu evitaria usar o sufixo, a menos que quisesse enfatizar o fato de que é uma classe abstrata e sentir que, de outra forma, os usuários da classe podem esperar que o nome indique uma implementação concreta.
fonte
Avoid
nomeando classes base com umBase
sufixo se a classe se destina ao uso em APIs públicas." Framework Design Guidelines, página 174Nenhuma das acima. Considere o propósito que sua classe base oferece; nomeie assim. Por exemplo, a classe base de Automóvel e Bicicleta pode ser Veículo.
Se você está criando classes básicas apenas para ter uma classe básica de uma classe, e sem nenhum propósito ou razão além disso, provavelmente você está fazendo algo errado.
fonte
Se você está falando sobre classes base virtuais, o padrão da Microsoft é ClassnameBase (como CollectionBase).
fonte
Eu acho que é uma questão de escolha. Eu diria que se você está criando muitas classes base, então talvez seja melhor ir com BaseClassname sempre porque dessa forma você SEMPRE poderá descobrir quais classes base você pode começar a usar apenas digitando Base e obtendo o resto da ajuda de Intellisense. E se você tivesse 20 classes base e incluísse Base como sufixo e esquecesse qual era o nome da classe base? Você deseja criar um diagrama de classes primeiro no VS e descobrir quais classes base estão disponíveis? Não há problema em nomeá-los ClassBase quando são apenas uma ou duas classes.
O mesmo vale para a decisão entre a função GetItems e ItemsGet. Eu diria que pelo menos para facilitar a leitura - vá para GetItems. Siga as convenções :)
fonte
GetItems
não funciona— “Get” é apenas um verbo e, portanto, só faz sentido gramatical em inglês como um prefixo, enquanto “Base” funciona como um adjetivo (prefixo) ou substantivo (sufixo).abstract
.Usamos BaseEntity, mas acho que é sua preferência. Freqüentemente vejo o outro.
Basta ser consistente com seu contexto, seja seu projeto, namespace ou, se possível, sua equipe. Diferentes convenções são piores do que uma má convenção IMHO.
fonte
Pessoalmente, eu não recomendo adicionar a palavra base. Você nunca sabe quando terá que alterar o código e ele não será mais o objeto base. Dito isso, já fizemos isso no passado, prefixamos a palavra Base na frente. Parece fluir melhor.
fonte
BaseEntity se parece muito com camel case - strName, bseEntity. Eu escolheria EntityBase, pois define o assunto primeiro, o que ajudará a identificar sua função mais rapidamente.
fonte
Sempre pense em colocar em ordem alfabética ao nomear as coisas Eu realmente não gosto de olhar para um servidor SQL e todo procedimento armazenado é denominado usp [algo]. Na mesma linha, não abuse de Get e Set como nomes principais para uma função. Em vez de GetItems ou PlaceOrder, pense em nomeá-los como ItemsGet ou OrderPlace.
Portanto, em geral, ClassnameBase / EntityBase seria uma escolha melhor.
fonte