111 votes

Conventions d'appellation pour les classes abstraites

Je me souviens très bien qu'à une certaine époque, la ligne directrice imposée par Microsoft consistait à ajouter le suffixe "Base" à une classe abstraite pour éviter qu'elle ne soit abstraite. Ainsi, nous avons des classes comme System.Web.Hosting.VirtualFileBase , System.Configuration.ConfigurationValidatorBase , System.Windows.Forms.ButtonBase et, bien sûr, System.Collections.CollectionBase .

Mais j'ai remarqué que, dernièrement, beaucoup de classes abstraites dans le Framework ne semblent pas suivre cette convention. Par exemple, les classes suivantes sont toutes abstraites mais ne respectent pas cette convention :

  • System.DirectoryServices.ActiveDirectory.DirectoryServer

  • System.Configuration.ConfigurationElement

  • System.Drawing.Brush

  • System.Windows.Forms.CommonDialog

Et c'est juste ce que j'ai pu trouver en quelques secondes. J'ai donc cherché à savoir ce que la documentation officielle avait à dire, pour m'assurer que je n'étais pas fou. J'ai trouvé le Noms des classes, des structures et des interfaces sur MSDN à l'adresse Directives de conception pour le développement de bibliothèques de classe . Curieusement, je ne trouve aucune mention de la directive consistant à ajouter "Base" à la fin du nom d'une classe abstraite. Et les directives ne sont plus disponibles pour la version 1.1 du Framework.

Alors, est-ce que je perds la tête ? Cette directive a-t-elle jamais existé ? A-t-elle été abandonnée sans mot dire ? Est-ce que j'ai créé de longs noms de classe tout seul depuis deux ans pour rien ?

Que quelqu'un me jette un os ici.

Mise à jour Je ne suis pas fou. La ligne directrice existait. Krzysztof Cwalina s'en plaint en 2005.

0 votes

Si vous lisez cet article, Krzysztof se plaint simplement d'avoir reçu "un ensemble de recommandations", sans nécessairement que ces recommandations soient officielles de Microsoft. Je me souviens avoir lu les directives de MS et les avoir vues déconseiller cette pratique.

1 votes

Je l'ai lu, mais c'est la première fois que je me rappelle avoir vu cet article. C'est un soulagement, en fait. Je n'ai jamais vraiment aimé la recommandation. Cela m'épargnera bien des grognements à partir de maintenant :)

3voto

Sam Jazz Points 101

Microsoft déclare, à :

https://docs.microsoft.com/en-us/dotnet/standard/design-guidelines/names-of-classes-structs-and-interfaces

" CONSIDERER de terminer le nom des classes dérivées par le nom de la classe de base. Ceci est très lisible et explique clairement la relation. Quelques exemples de ceci dans le code sont : ArgumentOutOfRangeException, qui est un type d'exception, et SerializableAttribute, qui est un type d'attribut. Cependant, il est important d'utiliser un jugement raisonnable dans l'application de cette directive ; par exemple, la classe Button est un type d'événement Control, bien que Control n'apparaisse pas dans son nom."

De manière générale, cela exclut implicitement l'utilisation de "Base" dans le nom.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X