C # Classe convenção de nomenclatura: É Base Class ou Classe Based ou classe abstrata

StackOverflow https://stackoverflow.com/questions/826821

Pergunta

O que é a abordagem recomendada para nomear classes de base? É prefixar o nome do tipo com " Base de Dados " ou " Resumo " ou será que apenas o sufixo com "Base"?

Considere o seguinte:

tipo: ViewModel v.g. MainViewModel , ReportViewModel

classe base: BaseViewModel ou ViewModelBase ou AbstractViewModel

Também considerar:

tipo: Product v.g. VirtualProduct , ExpiringProduct

classe base: BaseProduct ou ProductBase ou AbstractProduct

Qual você acha que é mais padrão?

class Entity : EntityBase
{
}

ou

class Entity : BaseEntity
{
}
Foi útil?

Solução

Existem exemplos no quadro com o sufixo base, por exemplo System.Configuration.Provider.ProviderBase, System.Web.SessionState.SessionStateStoreProviderBase.

Mas nem por isso todas as classes base abstratas no framework seguir essa convenção (por exemplo System.Data.Common.DbParameter, System.Data.Common.DbCommand).

Pessoalmente eu gostaria de evitar o uso do sufixo menos Eu queria enfatizar o fato de que é uma classe abstrata e sentiu que, caso contrário os usuários da classe poderia esperar o nome para indicar uma implementação concreta.

Outras dicas

Nenhuma das opções acima. Considere que propósito a sua classe base fornece; nomeá-lo disso. Por exemplo, a classe base de automóvel e de bicicleta pode ser veículo.

Se você está criando classes de base apenas para ter uma classe base de uma classe, e sem nenhum propósito ou razão que não seja, provavelmente você está fazendo algo errado.

Se você está falando de classes base virtuais, padrão da Microsoft é ClassnameBase (como CollectionBase.)

Eu acho que sua matéria um de escolha. Eu diria que se você está criando um monte de classes de base então talvez seja melhor ir com BaseClassName sempre, porque dessa forma você pode sempre encontrar o que base de classes que você pode começar a usar apenas digitando Base e ficando o resto da ajuda de intellisense. E se você tivesse 20 classes base e você adicionou Base como sufixo e você esqueceu o que era o nome da classe base? Você quer criar um diagrama de primeira classe de VS e descobrir o que estão disponíveis classes de base? Está tudo bem para nomeá-los ClassBase quando é apenas uma ou duas classes.

O mesmo vale para decisão entre GetItems e função ItemsGet. Eu diria para pelo menos amor de legibilidade - ir para GetItems. Siga as convenções:)

Nós usamos BaseEntity, mas eu acho que a sua preferência. Eu freqüentemente ver o outro.

Apenas ser consistente dentro de seu contexto, ser que o seu projeto, namespace ou se possível, a sua equipe. Diferentes convenções são piores do que um IMHO convenção ruim.

Pessoalmente, eu recomendaria contra a adição da base palavra em tudo. Você nunca sabe quando você vai ter que alterar o código ao redor e não será o objeto de base mais. Dito isto, temos feito isso no passado, nós prefixado a palavra base na parte da frente. Ele parece fluir melhor.

BaseEntity parece muito com caso camelo - strName, bseEntity. Eu iria para Base_entidade uma vez que define o primeiro assunto, o que o ajudará a identificar a sua função mais rápido.

Sempre pensar em ordem alfabética ao nomear coisas. Eu realmente não gosto de olhar para um servidor SQL e cada procedimento armazenado é chamado usp [algo]. Na mesma linha, não overuse Obter e Definir como principais nomes para uma função. Em vez de GetItems ou placeOrder, pensar em nomeá-los como ItemsGet ou OrderPlace.

Assim, em geral, ClassnameBase / Base_entidade seria uma escolha melhor.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top