ASP.NET入門隨想六之大航海家
發表于:2007-07-14來源:作者:點擊數:
標簽:
多隆云:我和韋春花的關系是很純潔的;網易稱其和迷蝶女友的關系是 培訓 雙向選擇制;楊振寧言《易經》思想阻礙了中國近代科學的發展;邏輯學家論:概念間的關系有五種,即同一、包含、交叉、分離、互斥。而康托爾卻認為:關系是有序偶。 ■ 我要懶+笨 - 程
多隆云:我和韋春花的關系是很純潔的;網易稱其和迷蝶女友的關系是
培訓雙向選擇制;楊振寧言《易經》思想阻礙了中國近代科學的發展;邏輯學家論:概念間的關系有五種,即同一、包含、交叉、分離、互斥。而康托爾卻認為:關系是有序偶。
■
我要懶+笨 - 程序設計的終極目標 前不久社區里出現題為《這樣的
程序員是否算是一個合格的程序員?》的熱貼,樓主言一手下編碼花時間比別人多但代碼規范健壯,設問這樣的程序員是否可以留用且如何用?頓時掀起一片嘩然,展開在中國這個特定的環境下何為程序設計目標及相關
項目管理之討論。心靈捕手運用老毛《矛盾論》之手法分析:"這個是市場和程序員的矛盾",稱"如果是小公司的話就別談什么發展……時間為第一生產力……如果不是……就先解決管理和預算問題",我不禁開始嘆服其處理方法之老辣。
撇開市場因素不談,程序設計的首要目標是去成功解決一現實問題。特別要注意的是,這個現實問題往往是動態的、隨著時間的變化而變化的,所以我們的代碼要足夠健壯,以適應這個變化過程,而不應把目標定位在解決某一個靜態點上的現實問題;其次代碼及其結構應該是簡潔的,只有簡潔才能使編寫容易、修改容易、維護容易,最大程度地節約成本;再則代碼應該能夠重復使用,貪婪的想法是代碼不僅能夠在一個現實問題中重用以減少重復勞動,還能在不同現實問題的交叉部份重復使用;最后因為人對世界的認識是一個迭代過程和現實問題在不斷變化這兩個因素,所以程序應該是不影響原來代碼的前提下容易擴展。 理論上說理解"萬物皆對象,事事要封裝",綜合面對過程的經驗,你已經可以開始動手解決任何一個現實問題,但你會發現在整個
開發過程中,僅憑目前的
知識和見解,自己會被大量繁雜問題所纏繞,直至放棄為止,但這些原本完全可以避免!不管是這理論還是那設計模式,所有前人經驗總結的終極目標無非就是讓程序設計變成更簡潔、更容易、更快捷,明白這點,許多杰出的程序大師為何號稱自己是"懶+笨"之人也就不難理解。
■
分離關系- 類的封裝與依賴 這個世界的事物不可能象一個個魯賓遜孤島散落在一望無際的海洋中,老死不相往來。相反,即使是中國最邊遠的墨脫縣,也依然與祖國保持著千絲萬縷的關系?!峨S想五》中我們知道如何把現實空間的事物整理成對象并抽象成類,接下來梳理一下它們之間的關系。
首先我們以程序設計目標的視角來關注封裝的意義。站在航海者(類的使用者)的角度來看,他不必要了解島嶼的地理、社會等內部結構(迪米特法則Law of Demeter),而只需知道島嶼生產和需要什么(類的功能)、找誰買賣(public成員接口)就行了,知道這些就能很快搭建起一個商業
網絡(設計應用程序)。而作為島嶼的統治者(類的實現者),他不必關注外界的風風雨雨,只需專注于島嶼內的生產和消費管理,統治者把這種現象稱之為高內聚。
封閉大大簡化了程序設計的復雜度,類間交流是通過一個狹窄的、經過良好限定的接口進行以保證類的
可靠性。一方面類的使用者收集類快速開發程序,并且不試圖改變類的內部結構,另一方面類的實現者在不修改public成員接口的前提下可以自由地修改內部工作方式。
但類的單獨存在沒有任何意義!最普通的關系是某個類的實例使用另一個類的實例,如果商船泰坦尼克號需要夏威夷島提供貨物,那么我們稱商船依賴(Dependency)于島嶼提供貨物,如圖1所示,而隨之而來的問題是,如果夏威夷島內部動亂(類的實現者修改public成員接口),將直接影響泰坦尼克號的正常工作,我們也將不得不重新組織商船類的內部結構以適應變化,前功盡棄。耦合是類間依賴程度的量度,對于變化可能性大的類在處理依賴關系時要盡量避免高耦合。
原文轉自:http://www.kjueaiud.com