應用菜鳥到框架大牛五部曲

今天起,文章開頭都會推薦一兩首好聽的歌曲,以符合行文的節奏心情,記念咱們流逝的青春。第一天先推薦,許巍的《時光》、《曾經的你》。html

編程領域從架構上,可分爲兩大部分,框架開發和應用開發。git

每一個人都是從應用開發起步的,使用着各類官方或第三方框架。Java很是依賴各類框架,J2EE, Spring等。.NET通常只須.NET Framework。框架是現代編程語言不可分割的一部分,框架要精無須大而全,一個不足百KB的JQuery就改變了整個Web的面貌。程序員

在實際開發中,對框架每每有兩種不正確的認識:編程

1、把框架地位看得太高,每每發生在初學者身上。覺得掌握框架就是掌握了這門語言。端着本上千頁的《xxx高級編程》,啃得是頭昏眼花,水平一點也沒長進。ADO.NET、WPF、WCF這些,要那麼高級知識幹嗎?項目根本用不上。設計模式

2、把框架看得過於簡單,通常出現於有數年經驗的開發者身上。隨着開發的磨練,對框架有了一些本身的認識,不少人開始本身建框架,又稱造輪子,發到博客上以爲很不錯。可若是用到實際項目中,這種「框架」會讓將來重構痛不欲生。若是隻是用來練習提升也不錯,不過要注意表費太多時間,由於架構每每都很不成熟。我我的就有幾回,本身累得半死,項目還沒法保證質量完成,教訓刻骨銘心。架構

開發框架並不必定牛,但能設計好一個框架必定很牛。那些少於10萬行代碼的項目最好不要搞本身的框架,沒寫到10萬行代碼,千萬別在實際項目中設計「框架」。app

若是確實想練練手,更好的主意是參加開源項目,GitCodePlex上都有許多優秀框架,包括.Net Framework一部分的EF和MVC就在CodePlex上,Git上則應有盡有,最著名的就是Mono。框架

 

不想作將軍的士兵不是好士兵,不想寫框架的程序員是屬於混日子的那種。這種程序員,即便作應用開發也不會專業起來。編程語言

我也沒寫過拿得出手的框架,因此不能說怎麼寫,只能談怎麼學習框架。歸納就四個字:邊用邊學。性能

具體起來,分做五步吧,無數大牛就是從這五部曲走過來的

1. 掌握基本語言特性。類屬性方法靜態繼承這些就算用不熟,至少能認出來。不用多說。

 

2. 找一篇好文章演練框架。這步很關鍵,一篇好文章就可讓你熟悉一個相對較小的框架,好比StructureMap。對於一個複雜框架好比Asp.NET,一篇文章可讓你完整認識一個方面,好比數據綁定。這個過程快則一天,慢則一週。

就我本身經驗來講,不喜歡循序漸進按示例,我喜歡這裏變點那裏變點,其實我是好奇而已,費時間多一點不過值得。

.NET BCL發展到4.5,已經有點臃腫了,迫切須要瘦身了。幾百M幾萬個類,怎麼可能死記硬背?知道引入哪一個程序集,在哪一個命名空間下能獲得本身須要的API就好。

網上教程資源參差不齊,並且很大一部分早已過期,對初學者來講,要找到這樣的好文章真的很難。本文最後,將附上一些我以爲適合快速入門,又提供擴展想象的優秀文章連接,我的視野有限,但願你們提醒,將不斷補充。

 

3. 在你的項目中應用,哪裏不會就google,問同事,問社區。 邊用邊思考,這個API是否能夠更方便,那裏配置是否是用什麼設計模式。初學乍練,咱們常常並非最恰當的方式用API,要有不斷重構優化的覺悟。

開發應用時,要想着某一天要作框架。有時間的話,能夠研究一下框架的源碼。要注意不是研究其邏輯實現,重點在於其架構模式,以及跟其餘框架、系統底層的交互,這是咱們提升框架設計能力必備的。

不是作應用開發就沒必要了解設計模式,偏偏相反,作應用開發由於接觸得少,更須要主動了解設計模式,以避免成日陷於業務海洋中成了磚家,專門搬磚蓋永遠蓋不到頂的業務大樓。並且有一些模式,應用開發中用的更頻繁。對於架構模式同理。

不要用一些「超前」的模式或架構,若是不懂它們也沒關係,由於你的代碼寫得不夠多,或者項目不夠複雜。要緊密結合本身的項目,若是本身工做項目規模不夠,能夠研究開源。

昨天剛看到一個朋友,發文抱怨用EF時被Repository模式誤導。這一方面確實要歸疚於那些「大牛」,不少人都人云亦云,根本沒指出甚至都沒想過這個模式帶來什麼樣的便利。另外一方面,做者應該也吸收了教訓,不要隨便用你看不懂的東西,若是它確實有用,那就到你能領悟的時候再用。

關於此條和前一條,陳梓瀚的一篇「胡扯」能夠看看。

 

4. 框架應用得日臻熟練,駕輕就熟了。這並還不夠,世上沒有完美的框架。除了已死的框架,框架都是在不斷髮展完善,要不斷學習框架的更新。若是你在應用的時候不斷思考,就不會以爲跟不上,由於更新帶來正好是期待已久的。

框架既然是不完美的,也必定有其生命週期。好比咱們把WebService升級成WCF,就會大大提升擴展性,知足更多更復雜的需求。要注意微軟有時候會出一些比較坑的框架,出一版就再也不更新,好比Linq2SQL,因此至少要在第二版出來,功能性能大幅提升了再升級框架。

很多人說,技術更新太快跟不上,其實就是太懶而已。框架新功能開發速度,跟你應用的速度差了幾個數量級。

雖然我曾經列過20條死於重構的理由,但我知道必定嚇不倒前赴後繼的勇士。好了,其實你們有一個百死不回的理由-爲框架升級而重構,天經地義。出了事情怎麼辦,要麼是框架的問題,要麼是系統實在太爛,能夠死得光榮瞑目了。

 

5. 在二、三、4步反覆N次後,一個開發平臺的主要框架了然於胸,開始框架開發之旅。

可能開始是構造一個個小的應用框架,必定要很謹慎地限制的應用範圍,注意擴展性,省得之後難以維護。

不要重複造輪子,現有的框架可能有種種不足,但要想一想你又不是鐵道部的,別人必定要有充分的理由纔會換你的框架。

專業的程序員業餘時間能夠寫點休閒的代碼,但任什麼時候候都要設法令本身參與框架更專業。

要有專業的命名,別圖省事或在命名上發揮創造力,要讓你們都能接受,學《.NET設計規範》

要有專業的文檔,專業的註釋。

要有專業的API,設身處地地想別人如何用你的框架,要考慮其餘人的習慣,要考慮在各類操做系統、開發平臺下的兼容性。

要用專業的標準,好比用W3C標準的Html,採用Unicode/Utf-8.而不是Ansi,不要別出心裁獨樹一職。

要有專業的分享,聽取別人意見,可讓你的框架完善事半功倍,讓你的框架和能力獲得承認。

最後,最最重要的是,要有專業的態度,鍥而不捨,無論投身於本身的仍是開源框架。只要不斷努力,十年以後,你的名字必定會隨着你的框架被時代所銘記。


我的認爲BCL中框架按使用頻率等,分爲下面幾個表格,等待高手推薦的攻略,歡迎共享。先奉上一篇本身找到並翻譯的IoC框架StructureMap的文章。

一級框架:

框架名 速成攻略/指南 備註
ASP.NET    
WCF    
IO   包括Net IO
ADO + EF    
LINQ    
Concurrent    

二級框架:

框架名 速成攻略/指南 備註
XML    
Reflection    
Winform    
WPF/Silverlight    
Graphics    
Workflow    
MEF    

擴展和第三方框架:

框架名 速成攻略/指南 備註
StructureMap(IoC) StructureMap極速上手指南(翻譯)  
NUnit(Unit Test)    
NHibernate    
……    

特別是千錘百煉的ASP.NET,通過了MVC/Razor/Web API的發展後,須要一個繼往開來的全新上手指南,若是實在找不到,很想本身寫一個,很是有挑戰性。還有蓬勃發展的Cocurrent編程,要總結一篇出色的攻略,須要有非凡的想象力。

學速成攻略,是下降工做壓力,提升生活質量的好途徑。不要擔憂所謂軟件開發的內功,你覺得是練九陰真經的白骨爪嗎?天下有奇遇練成上乘內功的有幾個呢?實際他們頂可能是氣宗,咱們是劍宗,到底孰強孰弱,金老先生早就給了咱們答案。

相關文章
相關標籤/搜索