衆所周知,打從.Net誕生那一天起,業界就瀰漫着一股貶低.Net的空氣。許多公司排斥.Net,由於.Net低效的名聲,加之怕被微軟綁架的擔憂。許多C++程序員有偏見,看不起.Net程序員,認爲那些人比較菜,才學入門級的語言。Java程序員對.Net也不待見,咱們會Spring,Hibernate等一大堆框架,大家除了用類庫還會什麼? 這些見解有些確實是偏見,咱們大能夠有力地回擊。有些見解卻也不無道理,跨平臺性.Net確實不如Java,主要是沒有官方的多平臺支持;論運行效率也確實與Native C++有天生的差距。然而很大一部分責任,要歸疚咱們.Net程序員。 其實每一個開發平臺,每種編程語言都有優點和劣勢。作爲.Net程序員,咱們須要更專業一點,熟悉.Net的長短之處,最大化的利用和迴避。 咱們要熟悉經常使用的設計模式,懂得DRY、SHY等編程原則,專業的運用Framework,寫專業的代碼。工做幾年了,不要讓人一看就是菜鳥。 要有專業的代碼風格,使用專業的命名。不要寫幾百行的方法,幾千幾萬行的類,裏面動輒十幾層的花括號。我所見過的這種代碼,一半以上都是水分。 要知道要儘量少地建立新對象,儘量地減小IO和反射操做,尤爲避免在循環中使用。 要知道對客戶輸入做驗證,要會正則表達式,要懂得如何儘量避免類型轉換,要會高效的類型轉換方式。 要明白一些基本Framework常識,好比List、Dictionary等集合類不是線程安全的,知道如何保證線程安全。 不要再寫Request.QueryString[id].ToString()和ConfigurationManager.AppSettings[key].ToString()這樣的好笑代碼了(我實在納悶爲何一多半人都這麼寫),不要處處多此一舉的Trim和Try…Catch了。當看到這種代碼,連本身爲身爲.Net程序員羣體一員感到羞慚。也就難怪其它語言的程序員看不起咱們,以菜鳥的眼光看待咱們了(參考《作Java開發這一年》),由於咱們就是如此。 其實,原本.Net雖然內存消耗大點,但運行速度整體並不比C++差,這點許多人已經實驗證實過了。能夠參考C#的性能到底有多差 、編寫高效的C圖像處理程序。咱們要了解.Net,支持.Net,反射機制和異常處理等本是.Net的先進特性,不要把它們變成性能殺手,爲***.Net的陣營製造磨刀送箭,反過來砍向.Net。若是你就是在循環中一次次進行IO和反射操做,硬要int.Parse+try catch來進行類型轉換,甚至都懶得用StringBuilder的話,咱們真該好好問問,C#不可忍受之慢,誰是罪魁禍首? 我不清楚形成.Net程序員羣體這種現狀的緣由。我徹底是自學入門的,固然開始時寫了許多爛代碼,如今可能也在寫,但至少本身在不斷提升。而不少的.Net程序員,不上論壇,不看博客,頂多案頭放着一本一千多頁的《.Net高級編程》(實際上是低級編程,內容MSDN上全有)備查。 我估計,不止是.Net,多數C++/Java程序員也不是一天到晚學習和提升,你們須要多樣的生活。但至少,在工做中能夠不斷提升吧,工做幾年了犯初學者的錯誤實在是說不過去,只能歸結爲態度問題。多是.Net比其餘語言平臺都容易入門得多,許多生性浮躁的初學者選擇了它。甚至在有些人眼裏,編程就是來混飯的,只要運行出結果,其餘不關個人事。平庸的程序員只會產生消極的生產力(爲何新人不會編程)。當我每次爲維護項目,花一成天甚至更久解決一個Bug時,我真想把開發者再抓回來,讓他們本身dogfood。 在此的同仁們,大家是否曾有過相似的感覺呢?相信你們既然能來博客園,能看到這篇文章,應該都是有志於不斷學習提升而來。你們是程序員中最努力的羣體,至少從代碼風格上看,也跟平日接觸的.Net程序員不是一個檔次。不過現實中,很多人既追求專業,而對一些不太專業的用法習覺得常。 好比今天看到一篇隨筆如何寫健壯的代碼,道法同窗先展現一段代碼,而後提出了許多改進思路,這種追求每一個細節的作法很值得學習,然而改進後的代碼仍有幾個問題: 若是要最嚴格的規範命名的話,parsedArgs不是改成_isArgsParsed,而是標準的Camel方式:argsParsed;還有隻比較字符串相等與否,應該用Equals而不是CompareTo方法;最不該該的是出現了goto語句,這是不得已狀況才用的。最後拋出異常時,應該拋一個具體的異常,在任何狀況下都不該該拋出Exception異常。 在此,我向你們強烈推薦,若是沒有讀過,必定要讀讀《.NET設計規範》這本書,若是你以前一本書也沒看過,那也應該先看看它。它是設計.NET Framework的大師們的智慧結晶,做爲開發高質量.Net程序的規範指南,還有什麼它更權威的呢?看過這本書,幾乎能夠避免全部常見的規範性問題,包括在上段提出的那幾條。 園子裏有好幾我的寫的代碼是咱們的榜樣,像老趙,裝配腦殼等人。還有一我的不得不提下,就是吉日嘎啦。做爲一個半路學.Net的老程序員,十年來,不斷思考並重構權限管理系統代碼,你們能夠看看DotNet.Common命名空間的來源說明,真實地說明了統一規範的好處。雖然你們可能由於他的商業行爲不喜歡他,可誰也不可否認,至少在專業及對專業的追求方面,吉日值得敬佩。 最後,我想對園子的.Net程序員同仁們說,也是對本身說,專業不是來自有沒有證,而是來自咱們的心裏。咱們要堅持本身的追求,堅持本身的風格,要有自信,堅定同不專業進行鬥爭。正價值的軟件,必定出自追求專業的開發人員,咱們決不會寫出讓火車追尾的調度程序的。