Quelle est l'approche recommandée pour nommer les classes de base? Est-ce qu'il préfixe le nom du type avec " Base " ou " Abstract " ou devrions-nous simplement le suffixer avec "Base"?
Considérer ce qui suit:
de type: ViewModel
par exemple MainViewModel , ReportViewModel
classe de base: BaseViewModel
ou ViewModelBase
ouAbstractViewModel
Considérez également:
type: Product
par exemple VirtualProduct , ExpiringProduct
classe de base: BaseProduct
ou ProductBase
ouAbstractProduct
Selon vous, lequel est le plus standard?
class Entity : EntityBase
{
}
ou
class Entity : BaseEntity
{
}
c#
naming-conventions
base-class
Soni Ali
la source
la source
Réponses:
Il existe des exemples dans le cadre avec le suffixe de base, par exemple
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 à moins que je ne veuille souligner le fait qu'il s'agit d'une classe abstraite et que je pense que sinon les utilisateurs de la classe pourraient s'attendre à ce que le nom indique une implémentation concrète.
la source
Avoid
nommer les classes de base avec unBase
suffixe si la classe est destinée à être utilisée dans les API publiques." Framework Design Guidelines, page 174Aucune de ces réponses. Considérez le but de votre classe de base; nommez-le comme ça. Par exemple, la classe de base Automobile et Vélo pourrait être Véhicule.
Si vous créez des classes de base juste pour avoir une classe de base d'une classe, et sans but ou raison autre que cela, vous faites probablement quelque chose de mal.
la source
Si vous parlez de classes de base virtuelles, la norme de Microsoft est ClassnameBase (comme CollectionBase.)
la source
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 d'utiliser toujours BaseClassname parce que de cette façon, vous pouvez TOUJOURS savoir quelles classes de base vous pouvez commencer à utiliser en tapant simplement Base et en obtenant le reste de l'aide. Intellisense. Et si vous aviez 20 classes de base et que vous ajoutiez Base comme suffixe et que vous oubliez quel était le nom de la classe de 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 que pour des raisons de lisibilité au moins - optez pour GetItems. Suivez les conventions :)
la source
GetItems
ne fonctionne pas - «Get» n'est qu'un verbe et n'a donc qu'un sens grammatical anglais comme préfixe, alors que «Base» fonctionne à la fois comme adjectif (préfixe) ou comme nom (suffixe).abstract
.Nous utilisons BaseEntity, mais je pense que c'est votre propre 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 IMHO.
la source
Personnellement, je recommanderais de ne pas ajouter du tout le mot base. 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é le mot Base sur le devant. Cela semble mieux couler.
la source
BaseEntity ressemble beaucoup à camel case - strName, bseEntity. Je choisirais EntityBase car il définit d'abord le sujet, ce qui vous aidera à identifier sa fonction plus rapidement.
la source
Pensez toujours à classer par ordre alphabétique lorsque vous nommez des choses. Je n'aime vraiment pas regarder un serveur SQL et chaque procédure stockée est appelée usp [quelque chose]. Dans le même ordre d'idées, n'abusez pas de Get et Set comme noms principaux pour une fonction. Au lieu de GetItems ou PlaceOrder, pensez à les nommer ItemsGet ou OrderPlace.
Donc, en général, ClassnameBase / EntityBase serait un meilleur choix.
la source