Jaké jsou nejlepší postupy pro používání metody prodloužení v .Net?

hlasů
37

Viděl jsem tyto používán všemi směry, a byli obviněni z nich pomocí špatně (i když v tomto případě, byl jsem jim za použití tímto způsobem prokázat bodu ).

Takže, co si myslíte, že jsou nejlepší postupy pro zaměstnávání Methods Extension?

Měli vývojové týmy vytvořit knihovnu rozšíření metod a jejich nasazení v různých projektech?

Měla by existovat sbírku společných rozšíření metod v podobě open source projekt?

Aktualizace: se rozhodli vytvořit organizační širokého rozšíření metody knihovny

Položena 06/08/2008 v 08:52
zdroj uživatelem
V jiných jazycích...                            


6 odpovědí

hlasů
7

Nadcházející verze rámcových pokynů design, 2nd Edition bude mít určité vodítko pro implementaci rozšíření metody, ale obecně:

Ty by měly definovat pouze prodlužovací metod „kde se dělají sémantický smysl“ a poskytují pomocné funkce týkající se každé provedení.

Také by se měli vyhnout prodloužení System.Object, neboť ne všechny .NET jazyky budou moci volat metodu rozšíření jako rozšíření. (VB.NET například budou muset nazývat jako normální statické metody na statické prodloužení třídě.)

Nedefinují metodu rozšíření ve stejném jmenném prostoru jako rozšířený typ, pokud jste rozšíření rozhraní.

Nedefinují metodu prodloužení se stejným podpisem jako „skutečný“ způsob, neboť nebude nikdy volána.

Odpovězeno 16/08/2008 v 18:41
zdroj uživatelem

hlasů
4

budete chtít, aby se podívat na http://www.codeplex.com/nxl a http://www.codeplex.com/umbrella které jsou obě prodlužovací metoda knihovny. Já osobně neměl podívat na zdrojový kód, ale jsem si jistý, že kluci by měl být schopen dát vám několik dobrých rad.

Odpovězeno 07/08/2008 v 13:14
zdroj uživatelem

hlasů
3

Jazyk Objective-C má „kategorie“ od roku 1990; jedná se v podstatě totéž jako .NET Methods Extension. Podíváme-li se na osvědčené postupy, možná budete chtít vidět, co pravidla pro palec Objective-C (Cocoa & Next) vývojáři přišli s kolem nich.

Brent Simmons (autor NetNewsWire RSS čtečky pro Mac OS X a iPhone) jen publikoval dnes o svých nových pravidel stylu pro použití kategorií a tam bylo trochu diskuse v rámci komunity Cocoa kolem té poště.

Odpovězeno 08/08/2008 v 08:46
zdroj uživatelem

hlasů
3

Byl jsem včetně mých rozšíření metod v mých základních knihoven třídy Utils, protože lidé, kteří pracují s mým rámce pravděpodobně muset najít způsoby užitečné, ale pro masové nasazení, kde do konce developer může mít na výběr způsobu rozšíření knihoven, Radil bych dávat všechny své rozšíření na vlastním jmenném prostoru, dokonce i jejich vlastní projekt souboru, takže lidé si mohou vybrat, aby přidat odkaz, nebo pomocí příkazu nebo jednoduše kde je zapotřebí, jako tak:

Core.Extensions.Base64Encode(str);

Moje třída Utils je můj bestest přítel na celém světě, to bylo předtím, než rozšíření metody přišel a oni jen přispěly k posílení našeho vztahu. Největší pravidlo bych jet, je dát lidem možnost volby, co rámec rozšíření, které používají, kde je to možné.

Odpovězeno 06/08/2008 v 09:08
zdroj uživatelem

hlasů
2

Myslím, že to závisí na tom, k jakému účelu metody Extension sloužit.

  • Rozšiřující metody, které se vztahují ke konkrétním obchodním potřebám projektu (ať už jsou připojeny k základní typy dat nebo vlastní objekty) by neměly být zahrnuty do knihovny, které by byly distribuovány na více projektech.
  • Rozšiřující metody, které se týkají základních datových typů (int, string, atd) nebo generických přípravků, které mají širší uplatnění by mohlo být zabalen a distribuovány napříč projekty.

Dbejte na to, aby globálně zahrnout příponu metody, které mají malou aplikaci, protože prostě ucpat IntelliSense a může vést ke zmatku a / nebo zneužitím.

Odpovězeno 06/08/2008 v 09:02
zdroj uživatelem

hlasů
1

Když jsem se poprvé dozvěděl o rozšíření Opravdu nadužíváno a zneužíváno je.

Z velké části jsem začal se dostat pryč od použití jakékoli metody rozšíření pro řadu důvodů.

Některé z důvodů, proč jsem přestal jejich použití jsou uvedeny v blogu linku Scotta výše, jako je například „Přemýšlejte dvakrát před prodloužením typy nevlastníte“. Pokud nemáte kontrolu nad zdroji pro typy, které se rozšiřují, mohou nastat problémy / kolize v budoucnu v případě, že typ zdroje má nějaké dodatky / změny, například přesunutí projektu na novější verzi .NET. V případě, že novější verze .NET zahrnuje metodu na typu stejným názvem jako rozšíření, někdo dostane clobbered.

Hlavním důvodem, proč jsem přestal používat metody rozšíření je, že nemůžete rychle zjistit ze čtení kódu, kde je zdrojem této metody je, a kdo „vlastní“ to.

Když jen čtení přes kód, který nelze říci, zda tato metoda je rozšíření nebo jen standardní NET metoda API typu.

Nabídka intellisense může dostat opravdu chaotický opravdu rychle.

Odpovězeno 15/07/2013 v 21:07
zdroj uživatelem

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