Windows開發的內功和招式

最近一個月筆者休了大約兩週的假期,期間沒有學習新的開發技術,也沒有去遊山玩水,而是對自己的知識結構和Windows開發本身進行了一個深入的思考,收穫頗多,在這裏希望和大家共同分享一下。

如果把Windows開發比作練武,那麼就一定有內功和招式,二者相依相存,沒有內功的招式只能算是花架子,中看不中用。

那麼,什麼算是內功呢?

首先,我想說的是系統模型和知識,整天在windows上做開發,對windows的瞭解夠麼?可能很多人說,我是做.net開發的,瞭解那麼多沒用,.net都做好了。我同意,人各有志嘛,但是我想問個問題,.net寫的大型客戶端有時候會突然卡一下,你能告訴我什麼原因,怎麼解決麼?C++寫的windows程序有時候內存會漲的很高,你能給我解釋一下爲什麼嗎? 別告訴我是內存泄漏,你怎麼就知道是內存泄漏?在哪泄漏的?如何解決?

其次,我想說的是內存模型,windows內存分爲虛擬內存,堆內存,棧內存,具體的堆內存又分爲CRT堆,私有堆等等,你能解釋一下都有什麼區別麼?如何分析那塊內存上存儲的什麼數據?如何去查看這些數據?使用什麼工具可以讓這個過程更加方便?

第三點,我想說的是關於C++語言和C#語言本身的一些知識,你瞭解的夠麼?什麼是C++ traits? C++構造函數和析構函數可以拋出異常麼?如何寫一個異常安全的類?對於C#,那些操作可能會導致性能問題,底層使用什麼技術實現的,都有什麼優點和缺欠?

限於篇幅,這方面的東西,不想寫太多了,我想說的是技術學習並不是只有招式就夠了,內功實在太重要了,沒有這些知識積澱,好多人知識憑藉自己的主觀感覺去做各種的判斷,一會說memory leak了,一會說問題在別人的代碼裏,自己沒問題,我想請問的是,你有根據麼?靠拍腦袋就做出的結論很難讓人信服。其他的內功還包括:TCP/IP,反彙編技術,調試技術等等,在此不一一舉例說明。

 

那麼招式都有什麼呢?

太多了,WPFWCFUI, .Net開發,MFCATLCOMWTL可以毫不誇張的說就只把這些知識都學習一遍就需要很長時間,而且你可能越學越覺得沒底,只習的招式沒有內功,根本不能發揮出招式的最佳效果,所以我的建議是,剛柔並進,內外兼修。

 

總結

本文是筆者對於windows開發學習近10年的一點感悟,並無誇張本意,只是希望指名其中的道理,給後來人一點方向,以便少走一些彎路。人總有迷失方向的時候,只去學習招式而不修煉內功可能會走火入魔,內外兼修纔是正路。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章