Was ist die Best Practices für die Verwendung von Erweiterungsmethoden in .net?

stimmen
37

Ich habe diese in alle Richtungen benutzt werden gesehen, und habe sie die falsche Art und Weise der Verwendung von beschuldigt worden (wenn auch in diesem Fall ich sich auf diese Weise mit einem demonstrieren Punkt ).

Also, was denken Sie, sind die Best Practices für die Verwendung von Erweiterungsmethoden?

Sollten Teams Entwicklung eine Bibliothek von Erweiterungsmethoden erstellen und über verschiedene Projekte bereitstellen?

Sollte es in Form eines Open-Source-Projekt eine Sammlung von gemeinsamen Erweiterungsmethoden sein?

Update: hat beschlossen, eine Organisation breite Erweiterungsmethoden Bibliothek erstellen

Veröffentlicht am 06/08/2008 um 08:52
quelle vom benutzer
In anderen Sprachen...                            


6 antworten

stimmen
7

Die bevorstehende Veröffentlichung der Rahmen-Design-Richtlinien, wird 2nd Edition einige Hinweise haben Erweiterungsmethoden für die Umsetzung, aber im Allgemeinen:

Sie sollten nur Erweiterungsmethoden definieren und bereitstellen Helfer Funktionalität relevant zu jeder Implementierung „wo sie semantischen Sinn machen“.

Sie sollten auch nicht alle .NET-Sprachen erstreckt System.Object vermeiden in der Lage, die Erweiterungsmethode als Erweiterung zu nennen. (VB.NET zum Beispiel müßte es als regelmäßige statische Methode auf der statischen Erweiterungsklasse nennen.)

Verwenden Sie kein Verlängerungsverfahren im gleichen Namensraum wie die erweiterte Art definieren, wenn Sie eine Schnittstelle sind erstreckt.

Verwenden Sie kein Verlängerungsverfahren mit der gleichen Signatur wie eine „echte“ Methode definieren, da es nie aufgerufen wird.

Beantwortet am 16/08/2008 um 18:41
quelle vom benutzer

stimmen
4

Sie vielleicht einen Blick auf nehmen wollen http://www.codeplex.com/nxl und http://www.codeplex.com/umbrella , die beide Erweiterungsmethode Bibliotheken sind. Ich persönlich habe nicht einen Blick auf den Quellcode hatte , aber ich bin sicher , dass die Jungs es wäre in der Lage Ihnen einige gute Hinweise zu geben.

Beantwortet am 07/08/2008 um 13:14
quelle vom benutzer

stimmen
3

Die Sprache Objective-C hatte „Kategorien“ seit Anfang der 1990er Jahre; diese sind im Wesentlichen dasselbe wie .NET Erweiterungsmethoden. Wenn für Best Practices suchen möchten Sie vielleicht, um zu sehen, was Faustregeln Objective-C (Cocoa & NeXT) Entwickler haben mit um sie herum kommen.

Brent Simmons (der Autor des Lesers NetNewsWire RSS für Mac OS X und iPhone) nur heute über seine gepostet für die Verwendung von Kategorien neuen Stil Regeln und es ist ein bisschen gewesen Diskussion in der Kakao - Community rund um diese Stelle.

Beantwortet am 08/08/2008 um 08:46
quelle vom benutzer

stimmen
3

Ich habe meine Erweiterungsmethoden wurde auch in mit meinen Core-Bibliotheken in der Utils-Klasse, weil die Leute, die mit meinem Rahmen arbeiten, sind wahrscheinlich die Verfahren nützlich, aber für den Masseneinsatz, wo der End-Entwickler zu finden, könnte eine Auswahl an Erweiterungsmethode Bibliotheken, ich würde Sie raten, alle Ihre Erweiterungen in ihren eigenen Namensraum setzen, sogar ihre eigene Projektdatei, so dass die Menschen können wählen, einen Verweis oder eine using-Anweisung hinzuzufügen, oder einfach bei Bedarf, etwa so:

Core.Extensions.Base64Encode(str);

Meine Utils-Klasse ist mein bestest Freund in der ganzen Welt, es war, bevor Erweiterungsmethoden entlang kamen und sie haben dazu beigetragen, nur unsere Beziehung zu stärken. Die größte Regel würde ich gehen durch ist es, Menschen zu geben Wahl darüber, welche Erweiterung Rahmen sie verwenden, wenn möglich.

Beantwortet am 06/08/2008 um 09:08
quelle vom benutzer

stimmen
2

Ich denke, es hängt davon ab, welchem ​​Zweck die Erweiterungsmethoden dienen.

  • Erweiterungsmethoden, die auf spezifische Geschäftsanforderungen eines Projekts beziehen (ob sie auf grundlegende verbunden sind Datentypen oder benutzerdefinierte Objekte) sollten nicht in einer Bibliothek enthalten sein, die über mehrere Projekte verteilt werden würde.
  • Erweiterungsmethoden, die grundlegenden Datentypen (int, String, etc.) beziehen oder Generika, dass eine breitere Anwendung haben könnte über Projekte verpackt und verteilt werden.

Achten Sie darauf, nicht zu global sind Erweiterungsmethoden, die wenig Anwendung haben, da sie nur intellisense verstopfen und zu Verwirrung und / oder Missbrauch führen kann.

Beantwortet am 06/08/2008 um 09:02
quelle vom benutzer

stimmen
1

Als ich zum ersten Mal von Erweiterungen fanden heraus, dass ich wirklich überstrapaziert und missbraucht sie.

Zum größten Teil für eine Reihe von Gründen wegzukommen alle Erweiterungsmethoden verwenden, habe ich begonnen.

Einige der Gründe, blieb ich mit ihnen in Scotts Blog Link oben erwähnt sind, wie „Denken Sie zweimal, bevor Arten erstrecken Sie nicht besitzen“. Wenn Sie keine Kontrolle über die Quelle für die Typen haben Sie erweitern, können Sie Fragen / Kollisionen in der Zukunft auftreten, wenn der Quelltyp einige Ergänzungen / Änderungen hat, wie Ihr Projekt auf eine neuere .NET-Version zu bewegen. Wenn die aktuelle .NET-Version ein Verfahren nach Art des gleichen Namen wie die Erweiterung enthält, wird jemand gehen clobbered zu bekommen.

Der Hauptgrund, warum ich Erweiterungsmethoden gestoppt ist, dass Sie nicht so schnell aus der Lektüre der Code kann sagen, wo die Quelle des Verfahrens ist und wer „besitzt“ es.

Wenn nur durch den Code lesen können Sie nicht sagen, ob die Methode ist eine Erweiterung oder nur eine Standard-Methode NET-API auf dem Typ.

Das IntelliSense-Menü kann wirklich chaotisch wirklich schnell.

Beantwortet am 15/07/2013 um 21:07
quelle vom benutzer

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