web-dev-qa-db-fra.com

Convention de dénomination de classe C #: s'agit-il d'une classe de base ou d'une classe de base ou d'une classe abstraite

Quelle est l'approche recommandée pour nommer les classes de base? Préfixe-t-il le nom du type avec "Base" ou "Abstract" ou le suffixerait-il simplement avec "Base"?

Considérer ce qui suit:

tapez: ViewModel par exemple MainViewModel , ReportViewModel

classe de base: BaseViewModel ou ViewModelBase ou AbstractViewModel

Considérez également:

tapez: Product par exemple VirtualProduct , ExpiringProduct

classe de base: BaseProduct ou ProductBase ou AbstractProduct

Selon vous, lequel est le plus standard?

class Entity : EntityBase
{
}

ou

class Entity : BaseEntity
{
}
105
Soni Ali

Il y a des exemples dans le Framework avec le suffixe de base, par ex. System.Configuration.Provider.ProviderBase, System.Web.SessionState.SessionStateStoreProviderBase.

Mais en aucun cas toutes les classes de base abstraites du Framework ne suivent cette convention (par exemple System.Data.Common.DbParameter, System.Data.Common.DbCommand).

Personnellement, j'éviterais d'utiliser le suffixe sauf Je voulais souligner le fait qu'il s'agit d'une classe abstraite et je pensais que sinon les utilisateurs de la classe pourraient s'attendre à ce que le nom indique une implémentation concrète.

84
Joe

Aucune de ces réponses. Réfléchissez à l'objectif de votre classe de base; nommez ça. Par exemple, la classe de base de l'automobile et du vélo pourrait être le véhicule.

Si vous créez des classes de base juste pour avoir une classe de base d'une classe, et sans autre but ou raison que cela, vous faites probablement quelque chose de mal.

42
Paul Sonier

Je pense que c'est une question de choix. Je dirais que si vous créez beaucoup de classes de base, il est peut-être préférable de toujours utiliser BaseClassname car de cette façon, vous pouvez TOUJOURS découvrir quelles classes de base vous pouvez commencer à utiliser en tapant simplement Base et en obtenant le reste de l'aide à partir de Intellisense. Et si vous aviez 20 classes Base et que vous aviez ajouté Base comme suffixe et que vous aviez oublié quel était le nom de la classe Base? Voulez-vous d'abord créer un diagramme de classes à partir de VS et découvrir quelles classes de base sont disponibles? C'est bien de les nommer ClassBase quand il ne s'agit que d'une ou deux classes.

Il en va de même pour la décision entre GetItems et la fonction ItemsGet. Je dirais pour des raisons de lisibilité au moins - optez pour GetItems. Suivez les conventions :)

4
Abhishek

Si vous parlez de classes de base virtuelles, le standard de Microsoft est ClassnameBase (comme CollectionBase.)

4

Nous utilisons BaseEntity, mais je pense que c'est votre préférence. Je vois souvent l'autre.

Soyez juste cohérent dans votre contexte, que ce soit votre projet, votre espace de noms ou si possible, votre équipe. Différentes conventions sont pires qu'une mauvaise convention à mon humble avis.

2
Gary.Ray

Personnellement, je recommanderais de ne pas ajouter du tout la base Word. Vous ne savez jamais quand vous devrez changer le code et ce ne sera plus l'objet de base. Cela étant dit, nous l'avons fait dans le passé, nous avons préfixé la base Word sur le devant. Il semble mieux couler.

2
kemiller2002