利用partial class 進行快樂的效率開發

2021-09-08 06:15:54 字數 1996 閱讀 3347

高效率地開發,不僅僅需要技術,還需要的是一些現實的技巧,相對.net framework 1.1中的c#來說,語言中提供的partial關鍵字,可以說是乙個偉大的創舉,在真實的業務開發中,很多時間會遇到各類不同的函式歸類整理的問題,儘管在vs.net ide中有偉大的ide標誌#regoin...#endregion可以很好地進行分類,但它仍然不是乙個理想的模式,很多時候,在只有內部業務處理的情況下,我們更加樂意在乙個類裡完成所有的功能,而並不想通過建立一系列的命名空間中包括一堆public函式來實現.

這個現實情況也許從純情的物件化思想來看並不完美,但實際上有很多因素讓人鬱悶,比較說,比較好的**輔助工具coderush,它的顏色大量渲染造成了ide速度地變慢,在乙個有上萬行**的檔案中,開啟的速度是非常令人鬱悶的.有人也許會說,怎麼會有上萬行**,難道不能把它們給處理一下嗎?分割成多個檔案.這個想法好,但要是在古代沒有partial class的時期,這就會產生大量的問題:新建立的檔案類命名為什麼?是否合理?**分割後,很多地方的**要修改為"類名.方法"的形式,能保證對源**的修改是安全可靠的嗎?建立乙個這樣乙個在系統意義上來說沒有單獨存在價值的類是否有必要?

有一些人樂意把其中的可重用函式提煉出來,形成乙個新的類,作為乙個單獨類的使用,這是無可厚非的,但是,如果要是遇到一堆邏輯是屬於此類的方法,但是因為客觀條件造成的方法太多而造成必須提煉時,應該怎麼辦?

不清楚古代的人是怎麼處理的,但現代一些的方法,通過partial類不妨是乙個很好的方案,大凡類似於業務單據一中的ide介面一類的,在乙個part中,然後此單據不同的邏輯業務就在不同的邏輯中,這樣的好處主要在於效率,不要指望類設計者一開始就考慮好**量並且能夠給你設計足夠的類來實現,就現實開發來說,沒有哪個公司有足夠強力的設計者能細緻到函式級別地提供設計結構給你,所以最中間的洽入點就是,設計者通過分析師給出來的要求設計出系統結構,並規劃好大致的類及主要的公共呼叫函式之後,內部的黑盒開發應該是由開發者即程式設計師自己來決定函式的取捨.

就以前我從事過的專案經驗來說,把類這一步化成了命名空間,分派命名空間及規定的必定實現公共類後,其它的任程式設計師在命名空間中發揮--無論你怎麼發揮,只要不影響我的公共呼叫就ok.不幸地是,儘管這類的方法是很有效率的,但造成了乙個非常巨大的問題就是,命名空間太,using來using去,怎麼看也不漂亮,由於命名空間被占用了,更高層次的分割就必須通過命名空間的堆積來完成,這種堆積有時還有一些***,比如你在ide中,檢視命名空間時,經常會發現程式設計師們自己創造的一些古怪的私有空間名稱,本來自由給出了無可厚非,但是,這樣一來,始終覺得心裡不舒服,因為如果能夠看見,就容易勾引人的好奇心.

通過partial雖然不能解決"你能夠看見"問題,但是它畢竟挪出了命名空間的地盤,可以使你更好地組織類與命名空間,如果沒有partial,就會僅僅因為"看起來不順眼"的而導致不得不放任乙個命名空間給程式設計師.

partial還有乙個更有趣的強大功能就是可以打造白盒式的測試驅動開發,在古老的開發中,一般測試驅動開發有兩種形式,第一種是創造乙個測試專案,對專案進行黑盒式處理,這樣的控制很不精細,儘管微軟的開發中提供了變通的私有函式的測試辦法,但是個人認為那看起來"太扭曲",要黑就黑,搞得模模糊糊扭扭捏捏地幹嘛.第二種是白盒測試,就是在類內部通過#if..#endif預處理來對測試**進行控制,這種好處是無須太多麻煩就可以直觀地對指定成員編寫測試**,可以說是乙個很精細化地控制,但是同時有乙個巨大的問題就是,它這樣的方法,有諸多不良因素,比如首先要在專案內引用測試專用的程式集,同時也造成了**的凌亂,儘管#region...#endregion可以解決一部分問題,但仍然不夠爽,理由同前,**太多,ide就太變慢了,不利於有效率地開發.

partial可以部分解決這個問題,說是部分解決是因為無法解決引用程式集的問題,這是必須的,引用程式集的問題只能通過配置比如nant,msbuilt之類的來解決.partial可以解決的問題就是,可以針對每乙個片斷類創造乙個test用例類,並用預定義指令進行修飾,在類的結構列表中,命名上有乙個小技巧就是不要再命名成"test_methodname"的形式,而應該用"methodname_test"的形式,這樣一來,許多事情就好辦了,在類的瀏覽列表中,由於按字母排序,很輕易就可以看出,哪一些函式有了測試用例,哪一些函式沒有,非常方便.

1 3 8 區域性類(partial class)

partial class 可以用於class struct,方法,inte ce,而且這些類 結構等等不侷限於乙個檔案中。假如您想對由工具生成的類,而不是自己寫的類進行新增內容,但是又不能重新執行該工具產生類,因為會把之前改的丟失掉,那麼這時候您只需要將類改為partial class。再使用 生...

python利用waitpid 處理殭屍程序

1.父程序列印父親後處於掛起狀態等待子程序完成所有命令後,父程序處理了子程序後在執行父程序的命令。import os import time re os.fork if re print 父親 result os.waitpid 1 0 0表示掛起父程序當子程序完成任務後父程序處理了子程序在執行父程...

分部類(partial class)和分部方法

類的宣告可以分割成幾個分部類的宣告。每個分部類的宣告都含有一些類成員的宣告。類的分部類宣告可以在同一檔案中也可以在不同檔案中。每個區域性宣告必須被標為partial class,而不是單獨的關鍵字class,分部類宣告看起來和普通類宣告相同,除了那個附加型別修飾符partial。分部方法是宣告在分部...