Meilleures pratiques: C# les méthodes d'Extension d'espace de noms et la promotion de méthodes d'extension
Je sais qu'il existe déjà un post, dé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 fournit une assez pratique méthode d'extension "Dans" qui s'étend de la 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 le System
espace de noms, tout le monde serait immédiatement voir, mais j'ai lire 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.
Vous devez vous connecter pour publier un commentaire.
Nous mettre tous dans leur propre espace de noms
Company.Common.Extensions
. De cette façon, si vous avez un de nos méthodes d'extension, vous les avez tous. De Plus, au moins à mon atelier, nous n'avons pas à nous soucier de notre développeurs de ne pas connaître les méthodes d'extension. J'ai l'opposé de souci, l'extension de surcharge de la méthode! 🙂Le problème ici n'est pas de la dénomination de l'espace de noms, c'est le manque de documentation et d'éducation de vos développeurs.
Mettre dans l'espace de noms de sens, d'écrire un article wiki de documentation de tous vos méthodes d'extension, puis envoyez un e-mail à vos développeurs avec un lien vers l'article de wiki.
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.
Maintien de l'espace de noms du nom de la société est sensible en général, pour éviter toute confusion.
@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.
Que 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.
En supposant que vous utilisez Visual Studio, une solution serait de créer un modèle de Classe (ou de modifier la valeur par défaut), de sorte que chaque fois qu'un développeur crée un nouveau fichier de classe automatiquement a l'aide d'instruction avec votre espace de noms(s). Voir Customize Visual Studio 2005 Modèles pour le Codage de la Productivité.
Oui,je pense que mettre les méthodes d'Extension dans propre société namespce est les meilleures pratiques. le mettre dans l'espace de noms System est un paresseux opération
Je suis stupide, paresseux et minimaliste, alors je les ai mis dans le même espace de noms que le type de prolonger. De cette façon, il n'y a pas besoin d'appoint à l'aide de relevés, de la documentation ou l'envoi d'emails sur eux (Winston).
Nous de tout mettre dans le même espace de Noms et de Classe, cependant nous utilisons des classes partielles pour les garder organisé.
Par exemple:
...etc tous ont des classes partielles...
Vous pouvez obtenir ce que vous voulez en mettant les méthodes d'extension dans l'espace de noms global. C'est ce que je fais et ils sont ensuite disponibles sans avoir besoin d'un
using
consolidés.