欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

談談技術原則,技術學習方法個人總結第2/2頁

 更新時間:2008年06月23日 19:37:43   作者:  
談談技術原則,技術學習方法,代碼閱讀及其它個人總結這篇文章是前一陣在水木BBS上和別人討論中偶自己發(fā)言的摘編,是偶這幾年開發(fā)過程完全經(jīng)驗式的總結。完全個人經(jīng)驗,供批判。

具體問題不多,每一個問題又有一些使用場景,每一個場景可以采用幾種模式實現(xiàn),每種模式有哪些變種,模式和變種有哪些優(yōu)點缺點......要了解這些可不容易拿對象的創(chuàng)建來說吧,有這些情況:

(1)一錘子買賣:直接new就行了

(2)你是我的唯一:單例

(3)千年等一回:對象池,原型,緩存

(4)似曾相識燕歸來:享元

(5)我看過GOF:工廠,抽象工廠

(6)不要問我從哪里來:IOC

具體到實現(xiàn)中,細節(jié)也很重要。但所謂的細節(jié),涉及的方面扯過來扯過去就那幾點。再向上一級別的實現(xiàn),無非就是UI,業(yè)務,數(shù)據(jù)接入這三層,再加入一個集成層也可以。UI無非就是那幾種模式,用的多無非就是以模板為主的和以控制為主的,業(yè)務上耷拉耷拉還有一些主要的模式,數(shù)據(jù)接入主要就是那三種模式。ADO.Net細分下去也有兩種使用模式。數(shù)據(jù)庫有要錢的有不要錢的有進程外的有進程內(nèi)的有復雜的有簡單的。文件有普通文件有帶索引的文件有html,xml等有特定格式的文件,碰上這些怎么操作。

三、對MSF的一點心得

軟件過程控制方面主要也是解決一些問題。代碼、Bug,需求,文檔,交流,發(fā)布,風險.偶從MSF中學到的唯一的東東是Tradeoff(權衡/取舍)。MSF的最有價值的思想應該就是取舍。要達到什么目的,給定什么,選擇什么,放棄什么。偶兩年前對MSF有過很長一段時間研究,寫過一篇Case(放在網(wǎng)上某庫,看要花錢買,嘿嘿)。以前軟件主要用于工業(yè)用途,穩(wěn)定性很重要,程序老掛可不得了。90年代初軟件應用從工業(yè)領域過渡到普通應用領域,功能和可獲得性變得很重要,穩(wěn)定性大家不看重,Windows脫穎而出。MSF最初版本就是那幾年成型的,從那開始,微軟的Trade-off基本上是進度優(yōu)先于功能,功能優(yōu)先于穩(wěn)定性,安全性。最近微軟的Trade-off變了,穩(wěn)定性,安全性排的比較靠前。當年背景是微軟開發(fā)隊伍變大了,開發(fā)管理有些混亂。于是微軟組織了一批高手,總結開發(fā)過程中的經(jīng)驗,形成MSF最初版。隨著時代發(fā)展,MSF逐漸演化成現(xiàn)在的版本。當前的MSF被微軟當作一個過程方法,向外界推廣。偶的看法是,MSF首先是微軟自己成功經(jīng)驗的總結,其次才是一種可參考的過程方法。MSF是教怎么成功的開發(fā)軟件產(chǎn)品,而不是怎么達到項目需求。并且,MSF不是普適的。有一本書,叫做《自適應軟件開發(fā)》,那本書實際上是MSF的最佳詮釋,只有在什么樣的組織里應用這種方法那本書分析得很透徹。

四、四個方法

歸納起來,大概偶覺得有用的方法就是這四種:

拜師學藝:以案例為主的學習,第一手資料最可靠。多看源碼,多看現(xiàn)有方案。沒事多寫代碼。

左右互博:同樣的問題,多學習多研究幾種解決方案。只學習一種容易障目,不通過比較,不能清楚某種軟件,某種解決方案,某種設計模式的優(yōu)缺點。在時間可能的情況下,多試一試不同的解決方法。

庖丁解牛:拿到東西就橫豎兩刀,分成橫向的肋骨和縱向的脊椎,剩下的都是皮肉。對于絕大多數(shù)OO軟件都實用。不實用不是你的問題,是軟件寫的有問題。對于自己寫的軟件,沒事也可以試一試劈一下,軟件沒嘩啦嘩啦散開證明寫的有問題。

吸星大法:任何軟件都有歷史問題,任何方法都有歷史問題。軟件要兼容呀,公司要宣傳呀,所以很多東東不是它表面的那樣。.net對底層綁定的那么厲害,這些都是歷史遺留問題。所以,學習一個東東,最好向前翻幾個版本,看看在該軟件演化過程中發(fā)生了哪些故事,這些故事的背景是什么,每個故事都意味著一些trade-off,從中間可以學習很多軟件設計知識,這樣學習,相當于把別人的實戰(zhàn)經(jīng)驗據(jù)為己有,多爽啊。這樣做的另一個意義是可以培養(yǎng)自己對技術的預測能力,比別人多看一步就是一個很大的優(yōu)勢。

五、閱讀代碼的技巧

對OO來說,一般一個500~1000個類的庫/軟件,主要的類或接口大概在10~20個左右,一般來說,這些類構成一個層次關系.每一層,這些類或接口會有一大堆子類/實現(xiàn).大概在數(shù)百個左右.剩下的類基本上都是工具類,輔助類,獲取特定資源的類.第一步應該是找到這些主要的類和接口,找出主要的調(diào)用過程,清楚這個過程.這樣,差不多就明白這個軟件/庫是怎么工作的了.第二步,是看這些主要類,接口的繼承/實現(xiàn),這樣可以了解這個軟件/庫可以做什么,怎么擴展.這樣,一個數(shù)M代碼量的東東,可以在2~3天的時間里把它弄清楚.

閱讀代碼的主要難度就是代碼量太大,但是OO極大的減低了代碼閱讀的難度,好的OO軟件一看見namespace, 類名,方法名就知道干什么的(在閱讀較多代碼后就能形成這種直覺)就不必要去閱讀具體的代碼了.閱讀的難度通過工具能降低很多:通過逆向工程獲得類圖和主要調(diào)用過程的序列圖,通過這兩圖的閱讀,就差不多了.Ndoc,Visio,doxygen,甚至word都是有用的輔助工具。實在不能明白的就看代碼.軟件的骨架大概就是這些,除此之外,每個軟件可能會涉及到一兩種核心的算法或它獨特的數(shù)據(jù)抽象(數(shù)據(jù)結構),實現(xiàn)某種規(guī)范或者某種已知的算法,這時候看看這些規(guī)范或已知的算法,結合代碼很快就理解了.此外,還有一些細節(jié)性知識分散在那些輔助類里面,了解骨架后,對這些東東大概有個底了,但不能準確的確定.這時候google,看看大家怎么用的,有什么注意事項.閱讀代碼如果順序不對,第一頭就扎進這些細節(jié),那就完了.對主要流程的掌握和對層次的掌握是第一位的.對設計模式的了解還是其次. 還有很多非OO軟件,采用這種方法,也是很容易讀的.比如,閱讀協(xié)議棧代碼,跟著一個包走一圈.在企業(yè)中,圍著一個訂單走一圈.這些都是非常有效的處理復雜系統(tǒng)的方法.在OO中嘛,就是跟著方法走一圈.選中一個方法,跟著它走一圈.這個方法選的好的話,這一圈基本上就把這個軟件/庫轉個差不多了.在這個過程中可能要碰到幾十個對象,上百個方法調(diào)用,搞懂了,就差不多了.但是,閱讀主線不能亂.

相關文章

最新評論