小編給大家分享一下LINQ如何構(gòu)建框架,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
企業(yè)建站必須是能夠以充分展現(xiàn)企業(yè)形象為主要目的,是企業(yè)文化與產(chǎn)品對外擴(kuò)展宣傳的重要窗口,一個合格的網(wǎng)站不僅僅能為公司帶來巨大的互聯(lián)網(wǎng)上的收集和信息發(fā)布平臺,成都創(chuàng)新互聯(lián)公司面向各種領(lǐng)域:成都集裝箱等成都網(wǎng)站設(shè)計、成都營銷網(wǎng)站建設(shè)解決方案、網(wǎng)站設(shè)計等建站排名服務(wù)。
如今,LINQ的版本發(fā)布已經(jīng)塵埃落定,是時候思考如何使用它了。Keith Farmer甚至談到了使用LINQ以消除子類。不過,在我們了解這些之前,還是先看看微軟的官方指南吧。
根據(jù)LINQ構(gòu)建框架設(shè)計指南的精神,微軟發(fā)布了基于LINQ構(gòu)建框架設(shè)計指南。LINQ構(gòu)建框架設(shè)計指南涵蓋了諸如API的設(shè)計與行為等主題。與很多公司制定的編碼指南不同,它并沒有包含設(shè)計的細(xì)枝末節(jié),例如命名模式與格式,除非它們牽涉到公有的API庫。
大多數(shù)框架設(shè)計指南最終都能夠找到與FxCOP集成的方式。FxCOP是一個代碼分析工具,它被微軟和其它公司用來確保編碼的一致性。
在概括的介紹之后,該文檔介紹了擴(kuò)展方法(Extension Methods)和泛型委托Func、Action以及Expression。在指南給出的標(biāo)準(zhǔn)警告中,有一個與命名空間沖突無關(guān)的指導(dǎo)——它要求在普通方法能夠?qū)崿F(xiàn)的情況下,不要濫用擴(kuò)展方法。當(dāng)兩個庫都公開了相同類型的擴(kuò)展方法時,會發(fā)生方法名稱的沖突。一旦發(fā)生,只能導(dǎo)入一個庫,另一個庫則必須使用完整的名稱才能被引用。
在擴(kuò)展LINQ一節(jié)中,對于如何命名泛型類型有一個頗有助益的建議。在類型名為S以指代包含元素項(xiàng)的集合時,名為T的泛型類型總是指代集合的元素項(xiàng)(items)。雖然這不是強(qiáng)制性的,但至少有助于閱讀內(nèi)建方法(built-in methods)。
對于性能,指南提出的一個建議是,如果性能牽涉到計算集合的元素總數(shù),則實(shí)現(xiàn)ICollection有助于提高性能。當(dāng)你只能實(shí)現(xiàn)IEnumerable時,就必須遍歷整個集合才能得到集合的元素總數(shù)。
現(xiàn)在,再回頭看看Keith Farmer提到的避免子類的方法:
我過去一直在考慮的一件事情是削減類的職責(zé),使其只具備基本的定義:恰如其分的屬性定義,與屬性對應(yīng)的方法,以及構(gòu)造器和類型轉(zhuǎn)換器。
然后使用擴(kuò)展方法定義適當(dāng)?shù)牟僮?,而不需要維護(hù)類作為自身實(shí)體的概念,這樣就沒有必要創(chuàng)建子類型了(即使子類型是可行的)。
例如,一個Node不需要知道Graph的操作也能夠工作良好,也可以認(rèn)為Graph不需要了解IsNetworkRouter的內(nèi)容。
在這種情況下,類似于Traverse(GraphLink)這樣的方法就屬于Graph中很好的方法定義,而類似于 FindLeastWorkRoute(Node, Node)這樣的方法,由于它依賴于GraphLink的特定子類型的實(shí)現(xiàn)細(xì)節(jié)(即它具有一個關(guān)聯(lián)的Work衡量標(biāo)準(zhǔn)),那么在我看來,這樣的方法***定義為一個擴(kuò)展方法。
如果僅僅是為了實(shí)現(xiàn)應(yīng)用程序特定的邏輯,而去創(chuàng)建一個自定義子類型,就會擾亂我們關(guān)注的類(例如,Graph就勝過同時定義Graph和GraphLink),而通過擴(kuò)展方法就可以避免這樣的情況。以上介紹LINQ構(gòu)建框架設(shè)計指南。
以上是“LINQ如何構(gòu)建框架”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!