89 votes

Convention de dénomination appropriée pour un type de délégué .NET?

Par convention, les classes sont souvent nommées comme des noms, des méthodes comme des verbes et des interfaces comme des adjectifs.

Quelle est la convention de dénomination commune pour un délégué? Ou quel est le bon moyen de différencier son nom lorsque les délégués sont répertoriés parmi des types et d'autres éléments?

Mon hypothèse immédiate est de nommer un délégué plus comme un adjectif, car une interface de méthode unique peut souvent être remplacée par un délégué.

Quelques idées:

 delegate object ValueExtracting(object container);

delegate object ValueExtractor(object container);

delegate object ValueExtractionHandling(object container);

delegate object ValueExtractionHandler(object container);
 

?

121voto

slugster Points 27178

Personnellement, j'utilise un couple de différents modèles:

[Task][State]Handler - UITaskFinishedHandler

[Event]Handler - ControlLoadedHandler

[Function Name]Delegate - DoSomeWorkDelegate - je besoin de créer un délégué pour l'appel d'une fonction sur un autre/nouveau thread

[Task]Callback - ContainerLoadedCallback - utilisé lorsque le contrôle A commence une action de contrôle de B n'a plus de travail et de contrôle a adopté une dépendance de contrôle de B (c'est à dire ControlA d'avoir passé une INTERFACE utilisateur conteneur pour ControlB à remplir et les besoins de notification pour réellement montrer le conteneur)

Lorsque vous avez un projet qui utilise beaucoup de multi threading ou asynchrone WCF appels vous pouvez vous retrouver avec beaucoup de délégués flottant autour, donc il est important d'adopter une norme qui au moins fait sens pour vous.

51voto

Borislav Ivanov Points 1364

Cadre des lignes Directrices de Conception - la désignation de l'almanach pour moi, dit le suivant sur le sujet:

√ FAIRE, ajoutez le suffixe "Gestionnaire" pour les noms des délégués qui sont utilisés dans les événements.
√ FAIRE, ajoutez le suffixe "de Rappel" pour les noms des délégués d'autres que ceux qui sont utilisés en tant que gestionnaires d'événements.
X NE PAS ajouter le suffixe "Délégué" à un délégué.

16voto

Kevin Kibler Points 5471

Puisqu'un délégué est quelque chose qui exécute une action (un verbe), vous devez nommer le délégué comme vous l'appelez quelque chose qui effectue cette action. Prenez Converter<TInput, TOutput> par exemple. Le verbe est Convert . La chose qui effectue la conversion s'appelle un convertisseur , d'où le nom du délégué.

6voto

Aaronaught Points 73049

Cela dépend d'un certain nombre de choses.

Si le délégué est destiné à être utilisé comme un événement, il doit toujours être appelée EventHandler sous-type, par exemple:

public delegate void ValueExtractingEventHandler(object sender,
    ValueExtractingEventArgs e);

Si ce n'est pas un événement, la MS des directives de codage (ce que je peux ne semblent jamais à trouver la bonne copie sur Google) recommandent explicitement contre incluant des mots comme "délégué" ou "gestionnaire" dans le nom du délégué, sauf dans le cas spécial de l' EventHandler types.

Normalement, les délégués doivent être nommés d'après des actions, qui serait comme ValueExtracting (si le délégué qui se passe avant la valeur est extraite) ou ValueExtracted (après extraction).

L' Func<T1, T2, ..., TResult> délégué de la syntaxe est également de plus en plus commun, mais à moins d'avoir 4 ou plus de paramètres qui passe en elle, vous n'avez pas besoin de déclarer votre propre simplement en utiliser un existant:

object ExtractObject(object source, Func<object, object> extractor);

Cette syntaxe est meilleure lorsque le délégué est utilisé comme une fermeture. Le délégué lui-même n'ont pas une très intéressante nom, mais l'argument est un agent de nom (hotte, fournisseur, l'évaluateur, le sélecteur, etc.)

La plupart des délégué aux usages de l'ajustement dans l'une des catégories ci-dessus, afin de déterminer celui qui est utilisée pour choisir de façon appropriée.

3voto

MikeP Points 4823

Je n'ai jamais pensé à ce sujet, principalement parce que je viens d'utiliser l'un de l' EventHandler<T>, Func<T>ou Action<T> surcharges et ne jamais la peine de définir mon propre. Je choisirais probablement ValueExtractor de ceux que vous avez énumérées. De ce fait, il ressemble plus à un objet, et quand vous l'appelez, vous serez à l'aide de cet objet pour effectuer une action. Par exemple:

ValueExtractor extractor += Blah;
var value = extractor(data);

En outre, la plupart des délégués sont nommés comme des noms. En cas de doute, suivez les .NET framework.

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