Quelles sont les meilleures pratiques pour l'utilisation de Méthodes d'Extension dans .Net?

StackOverflow https://stackoverflow.com/questions/3147

  •  08-06-2019
  •  | 
  •  

Question

J'ai vu ces être utilisés dans tous les sens, et ont été accusés d'utiliser le mauvais sens (bien que dans ce cas, j'ai été en utilisant cette façon de démontrer une point).

Alors, que pensez-vous sont les meilleures pratiques pour l'emploi de Méthodes d'Extension?

Devrait les équipes de développement de créer une bibliothèque de méthodes d'extension et de les déployer à travers les différents projets?

Devrait-il y avoir une collection de communes des méthodes d'extension sous la forme d'un projet open source?

Mise à jour:ont décidé de créer une organisation à l'échelle des méthodes d'extension de la bibliothèque

Pas de solution correcte

Autres conseils

La prochaine version de la Conception du Cadre des lignes Directrices de la 2e Édition aura quelques conseils pour la mise en œuvre de méthodes d'extension, mais en général:

Vous ne devez définir les méthodes d'extension "où ils font sens sémantique" et sont helper fournir des fonctionnalités pertinentes pour chaque mise en œuvre.

Vous devriez également éviter l'extension du Système.Objet que pas tous .NET languages sera en mesure d'appeler la méthode d'extension comme une extension.(VB.NET par exemple, faut-il comme une méthode statique sur la statique de la classe d'extension.)

Ne pas définir une méthode d'extension dans le même espace de noms que le type étendu, sauf si vous êtes extension d'une interface.

Ne pas définir une méthode d'extension avec la même signature qu'une "vraie" méthode, car il ne sera jamais appelé.

vous voudrez peut-être jeter un oeil à http://www.codeplex.com/nxl et http://www.codeplex.com/umbrella qui sont à la fois de la méthode d'extension des bibliothèques.Personnellement, je n'ai pas eu un coup d'oeil au code source, mais je suis sûr que le gars il serait en mesure de vous donner quelques bons conseils.

J'ai été y compris mes méthodes d'extension avec mon bibliothèques de Base dans le dossier Utils classe parce que les gens qui travaillent avec mon framework êtes susceptibles de trouver les méthodes utile, mais pour un déploiement de masse où la fin développeur peut avoir un choix de méthode d'extension des bibliothèques, je vous conseille de mettre tous vos extensions dans leur propre espace de noms, même leur propre fichier de projet, de sorte que les gens peuvent choisir d'ajouter une référence ou à l'aide d'instruction ou tout simplement lorsque requis, comme suit:

Core.Extensions.Base64Encode(str);

Ma classe Utils est mon meilleurs ami dans le monde entier, c'était avant les méthodes d'extension sont arrivés et ils ont seulement contribué à renforcer notre relation.La plus grande règle j'irais par est de donner aux individus le choix de ce cadre de l'extension qu'ils sont en utilisant autant que possible.

L'Objective-C langue a eu des "Catégories" depuis le début des années 1990;ce sont essentiellement la même chose que .NET les Méthodes d'Extension.Lorsque vous cherchez les meilleures pratiques que vous souhaitiez voir quelles sont les règles du pouce Objective-C (Cacao et Suivante), les développeurs ont imaginé autour d'eux.

Brent Simmons (l'auteur de la NetNewsWire lecteur de flux RSS pour Mac OS X et iPhone) vient de publier aujourd'hui sur son de nouvelles règles de style pour l'utilisation de catégories et il y a eu un peu de discussion dans le Cacao de la communauté autour de ce post.

Je pense que cela dépend de ce but l'Extension des méthodes de servir.

  • Les méthodes d'Extension qui se rapportent à des besoins spécifiques d'un projet (s'ils sont connectés à des types de données de base ou des objets personnalisés) ne devrait pas être inclus dans une bibliothèque, qui sera diffusé à travers de multiples projets.
  • Les méthodes d'Extension qui se rapportent à des types de données de base (int, string, etc) ou génériques qui ont une application plus large pourrait être emballés et distribués à travers les projets.

Prenez soin de ne pas globalement incluent l'Extension des méthodes qui ont peu d'application, comme ils ont juste boucher intellisense et peut conduire à la confusion et/ou de la mauvaise utilisation.

Lorsque j'ai découvert les Extensions j'ai vraiment abusés et maltraités.

Pour la plupart, j'ai commencé à obtenir loin de l'aide de toutes les Méthodes d'Extension pour un certain nombre de raisons.

Certaines des raisons, j'ai arrêté de les utiliser sont indiquées dans le blog de Scott lien ci-dessus, tels que "Réfléchir à deux fois avant de l'extension des types qui ne vous appartient pas".Si vous n'avez aucun contrôle sur la source pour les types de l'extension, vous pouvez rencontrer des problèmes/des collisions dans l'avenir si le type de la source a quelques ajouts/modifications, telles que le déplacement de votre projet pour une plus récente .Version NET.Si la nouvelle .NET version inclut une méthode du type et du même nom que votre extension, quelqu'un va se faire ridiculiser.

La raison principale pourquoi j'ai cessé d'utiliser des Méthodes d'Extension, c'est que vous ne peut pas dire rapidement à partir de la lecture du code source de la méthode et qui est "propriétaire" d'elle.

Quand il suffit de lire le code, vous ne pouvez pas dire si la méthode est une extension ou juste un FILET standard méthode de l'API sur le type.

Le menu intellisense peut être vraiment salissant vraiment rapide.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top