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 article , 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 en termes d’atsortingbution de l’espace de noms. Actuellement – pour les méthodes d’extension dans notre framework – j’utilise le pattern d’espace de nommage suivant

  • MyCompany.Web.Utils

et à l’intérieur j’ai les classes de méthode d’extension. Cela ne me dérange pas, car les extensions ne sont pas immédiatement visibles pour nos développeurs de logiciels. Considérons le cas où j’ai une classe SsortingngExtender qui fournit une méthode d’extension très pratique “In” qui étend l’object Ssortingng . Ayant la méthode d’extension avec l’espace de noms mentionné ci-dessus, nos programmeurs ne verront pas la méthode d’extension à moins qu’ils n’incluent explicitement son espace de nom. Au lieu de cela, si je mettais la méthode d’extension dans l’espace de noms du System , tout le monde le verrait immédiatement, mais j’ai lu que c’était une mauvaise pratique .

Ma question est donc de savoir comment vous faites la promotion de vos méthodes d’extension au moment où elles sont utilisées par vos développeurs.

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 mon magasin, nous n’avons pas à craindre que nos développeurs ne connaissent pas les méthodes d’extension. J’ai l’inverse l’inquiétude, la surcharge de méthode d’extension! 🙂

Le problème ici n’est pas la dénomination de l’espace de nommage, mais le manque de documentation et de formation de vos développeurs.

Placez-les dans n’importe quel espace de nom, rédigez un article sur le wiki documentant toutes vos méthodes d’extension, puis envoyez un courrier électronique à vos développeurs avec un lien vers l’article du wiki.

Ce n’est pas un problème d’espace de nommage, c’est un problème de communication.

Si ces méthodes sont utiles, vous devez les communiquer aux développeurs et, inversement, agir en fonction de leurs commentaires (avec des niveaux de jugement appropriés).

Le fait de placer quelque chose dans l’espace de noms du système est une recette pour le désastre et la confusion plus tard. Les seules fois où vous voulez faire cela est de “restaurer” les fonctionnalités dans les anciens frameworks et vous ne devriez probablement pas le faire vous-même mais vous devriez utiliser quelque chose comme LinqBridge pour le faire.

Méfiez-vous du désir de lancer toutes les extensions dans un seul espace de noms, à moins qu’elles ne soient vraiment utiles ensemble. Certains développeurs peuvent trouver le bois perdu pour les arbres s’ils sont bombardés de tout et de l’évier de la cuisine via intellisense.

Conserver le nom de l’entreprise dans l’espace de noms est généralement raisonnable pour éviter toute confusion.

@ Juri- Si vous pensez à cela, c’est le même problème que les développeurs sachant que la classe X existe dans le framework .NET. La communication est essentielle pour que tous les membres de l’équipe utilisent les bonnes classes, qu’il s’agisse de méthodes de vulgarisation ou d’autres aides.

Comme JP l’a déclaré, je vois souvent des méthodes d’extension dans un type de sous-dossier appelé Extensions. Avec un peu de chance, lorsque vous déclarez que vous utilisez my.company.web.utils, l’espace de noms est en fait mis en casse Pascal?

Même si vous les mettez au bon endroit, il n’ya aucune garantie à 100% que les autres développeurs les utiliseront.

En supposant que vous utilisiez Visual Studio, vous pourriez créer un modèle de classe personnalisé (ou modifier celui par défaut) de sorte que chaque fois qu’un développeur crée un nouveau fichier de classe, il possède automatiquement une instruction using avec votre ou vos espaces de noms. Reportez-vous à la rubrique Personnalisation des modèles Visual Studio 2005 pour la productivité du codage .

Oui, je pense que mettre les méthodes d’extension en nom propre est la meilleure pratique. le mettre dans l’espace de noms du système est une opération paresseuse

Nous mettons tout dans le même espace de noms et la même classe, mais nous utilisons des classes partielles pour les organiser.

Par exemple:

ExtensionMethods-Ssortingng.cs

ExtensionMethods-DataObject.cs

ExtensionMethods-Debug.cs

… etc ont tous des classes partielles …

Vous pouvez obtenir ce que vous voulez en plaçant des méthodes d’extension dans l’espace de noms global. C’est ce que je fais et ils sont alors disponibles sans avoir besoin de déclarations d’ using .

Je suis stupide, paresseux et minimaliste, alors je les mets dans le même espace de nommage que le type qu’ils étendent. De cette façon, il n’est pas nécessaire d’utiliser des déclarations, de la documentation ou des courriers électroniques à leur sujet (Winston).