Quelles sont les meilleures pratiques pour l'utilisation de méthodes d'extension en .Net?

voix
37

Je l' ai vu ces derniers étant utilisés dans tous les sens, et ont été accusés de les utiliser dans le mauvais sens (bien que dans ce cas, je les utilise de cette façon de démontrer un point de ).

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

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

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

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

Créé 06/08/2008 à 08:52
source utilisateur
Dans d'autres langues...                            


6 réponses

voix
7

La prochaine version des lignes directrices de conception-cadre, 2e édition aura quelques conseils pour la mise en œuvre des méthodes d'extension, mais en général:

Vous ne devez définir les méthodes d'extension « où ils ont du sens sémantique » et fournissent la fonctionnalité d'assistance à chaque mise en œuvre pertinente.

Vous devez également éviter d'étendre System.Object car tous les langages .NET sera en mesure d'appeler la méthode d'extension comme une extension. (VB.NET, par exemple, il faudrait l'appeler comme une méthode statique régulière sur la classe d'extension statique.)

Ne pas définir une méthode d'extension dans le même espace que le type étendu à moins que vous l'extension d'une interface.

Ne pas définir une méthode d'extension avec la même signature comme une méthode « réelle », car il ne sera jamais appelé.

Créé 16/08/2008 à 18:41
source utilisateur

voix
4

vous pouvez jeter un oeil à http://www.codeplex.com/nxl et http://www.codeplex.com/umbrella qui sont les deux bibliothèques de méthode d'extension. Personnellement , j'ai pas eu un coup d' oeil au code source , mais je suis sûr que les gars là - bas seraient en mesure de vous donner quelques bons pointeurs.

Créé 07/08/2008 à 13:14
source utilisateur

voix
3

Le langage Objective-C a eu « Catégories » depuis le début des années 1990; ce sont essentiellement la même chose que les méthodes .NET Extension. Lorsque vous cherchez les meilleures pratiques que vous pouvez voir ce que les règles de développeurs Objective-C pouce (Cocoa & NeXT) sont venus avec autour d'eux.

Brent Simmons (l'auteur du lecteur RSS NetNewsWire pour Mac OS X et iPhone) vient de poster aujourd'hui au sujet de ses nouvelles règles de style pour l'utilisation de catégories et il y a eu un peu de discussion dans la communauté Cocoa autour de ce poste.

Créé 08/08/2008 à 08:46
source utilisateur

voix
3

J'ai compris mes méthodes d'extension avec mes bibliothèques de base dans la classe Utils parce que les gens qui travaillent avec mon cadre sont susceptibles de trouver les méthodes utiles, mais pour le déploiement de masse où le développeur final pourrait avoir un choix de bibliothèques de méthode d'extension, Je vous conseille de mettre tous vos extensions dans leur propre espace de noms, même leur propre fichier de projet, afin que les gens peuvent choisir d'ajouter une référence ou une déclaration ou tout simplement en utilisant le cas échéant, comme suit:

Core.Extensions.Base64Encode(str);

Ma classe Utils est mon ami bestest dans le monde entier, il était avant les méthodes d'extension sont arrivés et ils ont seulement contribué à renforcer notre relation. La plus grande règle, je s'écouler est de donner aux gens le choix sur ce cadre l'extension qu'ils utilisent lorsque cela est possible.

Créé 06/08/2008 à 09:08
source utilisateur

voix
2

Je pense que cela dépend dans quel but les méthodes d'extension servent.

  • Les méthodes d'extension qui se rapportent à des besoins spécifiques d'affaires d'un projet (si elles sont liées à des types de données de base ou des objets personnalisés) ne doivent pas être inclus dans une bibliothèque qui serait répartie sur plusieurs 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é et distribué à travers des projets.

Prenez soin de ne pas globalement comprennent des méthodes d'extension qui ont peu d'application, comme ils ne bouchent IntelliSense et peut conduire à la confusion et / ou une mauvaise utilisation.

Créé 06/08/2008 à 09:02
source utilisateur

voix
1

Quand je l'ai appris sur les extensions je vraiment galvaudé et les abus.

Pour la plupart, j'ai commencé à sortir de l'utilisation des méthodes d'extension pour un certain nombre de raisons.

Certaines des raisons pour lesquelles je cessé de les utiliser sont notés dans le lien de blog de Scott ci-dessus, comme « deux fois avant d'étendre Pensez types que vous ne possédez pas ». Si vous avez aucun contrôle sur la source pour les types que vous étendez, vous pouvez rencontrer des problèmes / collisions à l'avenir si le type de source a quelques ajouts / modifications, telles que le déplacement de votre projet à une version plus récente .NET. Si la nouvelle version .NET comprend une méthode sur le type du même nom que votre extension, quelqu'un va faussés.

La principale raison pour laquelle je me suis arrêté à l'aide des méthodes d'extension est que vous ne pouvez pas dire rapidement à la lecture du code où la source de la méthode est et qui leur « propriétaire ».

Lors de la lecture juste par le code que vous ne pouvez pas dire si la méthode est une extension ou juste une méthode API standard NET du type.

Le menu IntelliSense peut être vraiment désordre très vite.

Créé 15/07/2013 à 21:07
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more