42 votes

Meilleures pratiques: espace de noms des méthodes d'extension C # et promotion des méthodes d'extension

Je sais qu'il existe déjà un postdécrivant presque le même, mais je pense que le mien est un peu différent.

Ce que je voudrais savoir, c'est comment vous organisez vos méthodes d'extension dans les conditions de l'attribution de l'espace de noms. Actuellement - pour les méthodes d'extension dans notre cadre - je utiliser l'espace de noms suivant modèle

  • MyCompany.Web.Utils

et à l'intérieur j'ai l'extension de la méthode des classes. C'est très bien pour moi avec l'inconvénient que les rallonges ne sont pas immédiatement visibles à nos développeurs de logiciels. Considérons le cas où j'ai un StringExtender classe qui met en pratique la méthode d'extension "Dans" qui s'étend de l' String objet. L'extension de la méthode au sein de l'mentionnés ci-dessus de noms, nos programmeurs de ne pas voir l'extension de la méthode, à moins qu'ils comprennent explicitement son espace de noms. Au lieu de cela, si je mettais la méthode d'extension dans l' System d'espace de noms, tout le monde serait immédiatement voir, mais j'ai lu que c'est une mauvaise pratique.

Donc ma question est de savoir comment vous faites la promotion de vos méthodes d'extension s.t. ils sont utilisés par les développeurs.

42voto

JP Alioto Points 33482

Nous les mettons tous dans leur propre espace de noms Company.Common.Extensions . De cette façon, si vous avez l'une de nos méthodes d'extension, vous les avez toutes. De plus, au moins dans ma boutique, nous n'avons pas à nous soucier du fait que nos développeurs ne connaissent pas les méthodes d'extension. J'ai l'inquiétude opposée, surcharge de la méthode d'extension! :)

10voto

Winston Smith Points 12029

Le problème ici n'est pas le nommage de l'espace de noms, c'est le manque de documentation et d'éducation de vos développeurs.

Mettez-les dans n'importe quel espace de noms logique, écrivez un article wiki documentant toutes vos méthodes d'extension, puis envoyez un email à vos développeurs avec un lien vers l'article wiki.

7voto

ShuggyCoUk Points 24204

Ce n'est pas un espace de noms problème c'est un problème de communication.

Si ces méthodes sont utiles que vous devez communiquer aux développeurs et, à l'inverse, la loi sur la rétroaction de leur part (avec des niveaux appropriés de jugement).

Placer quoi que ce soit dans l'espace de noms System est une recette pour le désastre et la confusion plus tard. Les seules fois où jamais vous voulez faire est de "retour port' de la fonctionnalité dans les cadres et alors vous ne devriez probablement pas le faire vous-même, mais doit utiliser quelque chose comme LinqBridge de le faire.

Méfiez-vous de l'envie de jeter toutes les extensions dans un espace de noms, sauf s'ils sont vraiment largement utile ensemble. Certains développeurs peuvent trouver le bois perdu pour les arbres s'ils sont bombardés avec tout et l'évier de la cuisine via intellisense.

Garder l'espace de noms du nom de la société est sensible en général, pour éviter toute confusion.

3voto

Dan Diplo Points 16133

En supposant que vous utilisez Visual Studio, une façon serait de créer un modèle de classe personnalisé (ou de modifier le modèle par défaut) de sorte que chaque fois qu'un développeur crée un nouveau fichier de classe, il ait automatiquement une instruction using avec vos espaces de noms. Voir Personnaliser les modèles Visual Studio 2005 pour la productivité du codage .

3voto

RichardOD Points 19942

@Juri - Si vous pensez à ce sujet c'est le même problème que les développeurs sachant que la classe de X existe dans la .NET framework. La Communication est la clé de tous les membres de l'équipe, utilisez le bouton droit de classes, ils ont des méthodes d'extension ou de certaines autres helper.

Comme JP a déclaré, je vois souvent des méthodes d'extension dans une sorte de sous-dossier appelé Extensions. J'espère quand vous dites que vous utiliser mon.de l'entreprise.web.utils l'espace de noms est en fait Pascal tubé?

Même si vous les mettez dans un bon endroit il n'y a pas de garantie à 100% que les autres développeurs les utilisent.

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